JavaScript中的正则表达式在不同的浏览器中得到的结果可能会有差异,下面把正则表达式在五大主流浏览器(IE、Firefox、Chrome、Safari、Opera,以当前版本为准)之间的差异整理一下罗列出来。

1. Firefox和Chrome会过度优化在循环(以及其中内嵌的函数定义)中创建的正则表达式,似乎它们在假设写JavaScript的人会把正则表达式的构建和赋值写错地方。var r;

for(var i = 0; i < 2; i++){

var x = /abc/g;

if(r)

// 第二个循环时Firefox和Chrome会输出“true”

document.write(r == x);

else

r = x;

}

2. 如果你把一个有可能什么也不返回的函数作为第二个参数传递给replace方法,那么IE可能会直接删除匹配的文本(在之前的测试中我总结的是Opera的行为比较独特,现在看起来似乎是错误的结论),而其它浏览器则是会将匹配的文本替换成“undefined”。// IE会输出“13”,而其它浏览器输出“1undefined3”

document.write('123'.replace(/2/, function(){}));

3. 如果使用new RegExp的形式创建正则表达式时使用一个已有的正则表达式实例作为参数,那么大部分浏览器都会创建一个基本功能相同,但完全独立的、全新的正则表达式实例;而Safari则会很干脆地返回作为参数的那个正则表达式实例。var r = /1/;

// Safari会输出“true”,而其它浏览器输出为“false”

document.write(new RegExp(r) == r);

4. 如果把一个“空”的正则表达式直接转化成字符串,IE以外的浏览器都会得到“/(?:)/”,而IE会得到“//”——但从正则表达式上直接提取source属性的时候,得到的都是空字符串。// IE输出“//”,其它浏览器输出“/(?:)/”

document.write(new RegExp(''));

// IE输出“undefined”,其它浏览器输出“/(?:)/”

document.write(eval('' + new RegExp('')))

5. 如果把一个包含斜线“/”的正则表达式直接转化成字符串——以“new RegExp('/')”为例,只有Firefox和Opera会得到“/\//”,并且直接提取source属性会得到“\/”;而其它浏览器则会得到“///”,且直接提取source属性会得到“/”。// Firefox和Opera输出“/\//”,其它浏览器输出“///”

document.write(new RegExp('/'));

// Firefox和Opera输出“/\//”,其它浏览器输出“undefined”

document.write(eval('' + new RegExp('/')))

6. 如果在使用字面表达式来定义一个正则表达式时,使用了无效的选项标志(例如“/abc/n”),则Chrome和Safari会完全忽视此无效选项标志(等同于“/abc/”),而在其它浏览器会导致语法错误。// Chrome和Safari会输出“/abc/”,其它浏览器中产生语法错误

document.write(/abc/n);

7. 如果通过构造器来创建正则表达式时,为其指定选项标志的(第二个)字符串参数中包含了非有效标志的字符,在Firefox中就会引起一个异常,而其它浏览器会将无效的部分忽略。// Firefox中会引起一个异常,提示无效的标志;而其它浏览器会输出“/1/

document.write(new RegExp('1', 'n')); ”

以上就是JavaScript正则表达式的浏览器的差异 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

js php 正则差别,JavaScript正则表达式的浏览器的差异相关推荐

  1. js php 正则差别,正则表达式(括号)、[中括号]、{大括号}的区别小结,正则表达式小结...

    正则表达式(括号).[中括号].{大括号}的区别小结,正则表达式小结 正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*) ...

  2. js 最新手机号码、电话号码正则表达式

    js最新手机号码.电话号码正则表达式 正则表达式(regular expression)是一个描述字符模式的对象.使用JavaScript正则表达式可以进行强大的模式匹配和文本检索与替换功能. 手机号 ...

  3. 【JS】JavaScript正则表达式基础

    目录 一.正则表达式基础 二.JS字符串使用正则表达式 (1).新建正则表达式对象 (2).方法 (3).使用 三.Regexper 正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScri ...

  4. 常用js正则表达式 Javascript正则表达式实战手册

    最近做了几个项目,发现正则表达式用得越来越多了.我个人的习惯是,能通过查手册获取的东西绝不死记硬背,虽然大多数技术网站都搜罗了一堆Javascript正则表达式的用法,但我还是想整理一份更有实战意义的 ...

  5. html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签

    js 如何正则匹配没有内容的空标签并移除掉? 例如 等等 正则 /]*?)?>\s*?/ig html=' '+ '\n '+ '\n'+ '\n '+ '\n '+ '\n '+ '\n'+ ...

  6. 分享一张JavaScript正则表达式脑图和来自MDN的正则特殊字符说明

    1.正则特殊字符说明 来自MDN Regular_Expressions 字符 含义 \ 匹配将依照下列规则: 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释.例如,前面没有''的' ...

  7. 【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)

    javascript正则表达式的基本使用(JavaScript RegExp 对象) 1. 正则表达式是什么? 2. 基本使用语法 2.1 正则表达式思维导图 2.2 定义正则表达式 2.2.1 普通 ...

  8. javascript 正则表达式详解

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  9. 经典JavaScript正则表达式实战

    来源:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html 目录 1. 正则表达式实战...1    2. 匹 ...

最新文章

  1. 二进制搜索树_二进制搜索树数据结构举例说明
  2. sys.argv[n] (终端运行python文件第n个参数) 在 pycharm 中的应用
  3. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源
  4. 程序员的精力呵护指南!来自十年程序员的精力管理经验
  5. 《信号检测与处理》的学习
  6. 引入Jaeger——使用
  7. 牛客网 【每日一题】5月12日题目精讲 模拟战役
  8. 【BZOJ2553】禁忌,AC自动机+期望DP+矩乘
  9. 1 dhcp服务器的配置文件,Linux1 DHCP服务器配置 主配置文件(dhcpd.conf)
  10. 2022美赛M奖经验总结(4)图文优化篇
  11. 简述人工智能的发展历程图_一图读懂人工智能发展史
  12. leaflet保存pm绘图geojson数据
  13. 解决Markdown在线编辑器不能换行的问题
  14. python的撤销和回退_撤销和回退
  15. 2019校招真题编程(十九)魔法深渊
  16. poj 1036 Gangsters
  17. java aot,Java三种编译方式: 前端编译 JIT编译 AOT编译
  18. “二亿大盗”自述: 我专偷官员
  19. JS实现随机生成十六进制颜色值的代码
  20. 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树

热门文章

  1. html如何改变浏览器的图标,css 更换浏览器 默认图标
  2. css修改select选择框option被选中的背景颜色_这五个有用的 CSS 属性完全被我忽视了...
  3. Mapreduce,mapper任务无输出以及相关问题解决,日志的正确用法
  4. 多线程基础-基本概念(一)
  5. Online DDL
  6. pythonwebsocket接口自动化测试_基于websocket接口的jmeter自动化测试实践(2)
  7. 如何快速在CentOS搭建光盘【永久搭载光盘】
  8. docker容器简介及安装
  9. shell脚本练习之——形状练习(菱形、直角三角形、等腰三角形、五角星)
  10. 常见服务器解析漏洞(IIS,Nginx,Apache)