js php 正则差别,JavaScript正则表达式的浏览器的差异
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正则表达式的浏览器的差异相关推荐
- js php 正则差别,正则表达式(括号)、[中括号]、{大括号}的区别小结,正则表达式小结...
正则表达式(括号).[中括号].{大括号}的区别小结,正则表达式小结 正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*) ...
- js 最新手机号码、电话号码正则表达式
js最新手机号码.电话号码正则表达式 正则表达式(regular expression)是一个描述字符模式的对象.使用JavaScript正则表达式可以进行强大的模式匹配和文本检索与替换功能. 手机号 ...
- 【JS】JavaScript正则表达式基础
目录 一.正则表达式基础 二.JS字符串使用正则表达式 (1).新建正则表达式对象 (2).方法 (3).使用 三.Regexper 正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScri ...
- 常用js正则表达式 Javascript正则表达式实战手册
最近做了几个项目,发现正则表达式用得越来越多了.我个人的习惯是,能通过查手册获取的东西绝不死记硬背,虽然大多数技术网站都搜罗了一堆Javascript正则表达式的用法,但我还是想整理一份更有实战意义的 ...
- html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签
js 如何正则匹配没有内容的空标签并移除掉? 例如 等等 正则 /]*?)?>\s*?/ig html=' '+ '\n '+ '\n'+ '\n '+ '\n '+ '\n '+ '\n'+ ...
- 分享一张JavaScript正则表达式脑图和来自MDN的正则特殊字符说明
1.正则特殊字符说明 来自MDN Regular_Expressions 字符 含义 \ 匹配将依照下列规则: 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释.例如,前面没有''的' ...
- 【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)
javascript正则表达式的基本使用(JavaScript RegExp 对象) 1. 正则表达式是什么? 2. 基本使用语法 2.1 正则表达式思维导图 2.2 定义正则表达式 2.2.1 普通 ...
- javascript 正则表达式详解
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
- 经典JavaScript正则表达式实战
来源:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html 目录 1. 正则表达式实战...1 2. 匹 ...
最新文章
- 二进制搜索树_二进制搜索树数据结构举例说明
- sys.argv[n] (终端运行python文件第n个参数) 在 pycharm 中的应用
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源
- 程序员的精力呵护指南!来自十年程序员的精力管理经验
- 《信号检测与处理》的学习
- 引入Jaeger——使用
- 牛客网 【每日一题】5月12日题目精讲 模拟战役
- 【BZOJ2553】禁忌,AC自动机+期望DP+矩乘
- 1 dhcp服务器的配置文件,Linux1 DHCP服务器配置 主配置文件(dhcpd.conf)
- 2022美赛M奖经验总结(4)图文优化篇
- 简述人工智能的发展历程图_一图读懂人工智能发展史
- leaflet保存pm绘图geojson数据
- 解决Markdown在线编辑器不能换行的问题
- python的撤销和回退_撤销和回退
- 2019校招真题编程(十九)魔法深渊
- poj 1036 Gangsters
- java aot,Java三种编译方式: 前端编译 JIT编译 AOT编译
- “二亿大盗”自述: 我专偷官员
- JS实现随机生成十六进制颜色值的代码
- 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树
热门文章
- html如何改变浏览器的图标,css 更换浏览器 默认图标
- css修改select选择框option被选中的背景颜色_这五个有用的 CSS 属性完全被我忽视了...
- Mapreduce,mapper任务无输出以及相关问题解决,日志的正确用法
- 多线程基础-基本概念(一)
- Online DDL
- pythonwebsocket接口自动化测试_基于websocket接口的jmeter自动化测试实践(2)
- 如何快速在CentOS搭建光盘【永久搭载光盘】
- docker容器简介及安装
- shell脚本练习之——形状练习(菱形、直角三角形、等腰三角形、五角星)
- 常见服务器解析漏洞(IIS,Nginx,Apache)