阅读:1437回复:2
【已解决】String.prototype.match() 的疑问
今天调试脚本时总是提示括号未配对,但是又找不出错误的地方
弄了好半天,终于找到原因,结果竟然是match函数中的字符串参数的括号没配对造成的 下图是fx29b和chrome 35.0.1898.0的对比,二者的行为一模一样 图片:1.png 在.Net中match函数的参数可以是字符串也可以是正则,当参数是字符串时,搜索串不做任何转义处理,所以也不会进行任何的语法检查,只是单纯的匹配char数组 而到了js中似乎有点不一样,虽然我是用字符串来匹配,但是字符串中的未配对括号竟然也导致了语法异常…… 按照MDN中的相关描述,这个函数实际上只接受regex作为参数 那么,我是否可以理解为,match接受字符串作为参数的写法实际上是一种方言,浏览器自动地把字符串转化为了相应的regex(如在chrome中可以看出,三种写法全部都对应/abc(/) ;那么问题在于,从上图可以看出,如果使用字符串,即使采用转义写法,解释器也不是不认的 在.Net中,使用字符串代替regex是处于性能考虑,既然js中都是转换为regex,那么是否就说明: 1. 用字符串作为match的参数时,无法匹配不成对的括号 2. 采用字符串和regex作为参数对性能没有影响 |
|
|
1楼#
发布于:2014-04-06 12:53
没看见下面那个说明, 原来是这样, 我明白了!
非常感谢! |
|
|