Ben*_*zar 3 javascript regex internet-explorer
以下javascript代码连接正则表达式找到的匹配项.正则表达式应该找到任何单词或一组引用的单词.它似乎在FireFox和Chrome中完美运行,但它在IE中无法正常工作(我只在IE8上测试过它).
var searchString = '';
var notString = 'dog cat "pirate ship"';
var matches = notString.match(/(\w+|"[^"]+")/ig);
for (i in matches) {
searchString += " NOT " + matches[i];
}
alert(searchString );
Run Code Online (Sandbox Code Playgroud)
正确的输出应该是:
不是狗不是猫不是"海盗船"
但在IE8中我得到:
不是狗猫"海盗船"不是狗不是猫不是"海盗船"不是8不是21
有关如何使这种跨浏览器兼容的任何建议.
非常感谢,
问题是你使用该for...in声明.一个for...in语句将遍历对象的所有枚举的属性,他们不是真的适合用于遍历数组元素-在这种情况下,它遍历以下特性:
matches.input
matches.0
matches.1
matches.2
matches.index
matches.lastIndex
Run Code Online (Sandbox Code Playgroud)
另请参见http://msdn.microsoft.com/en-us/library/7df7sf4x(VS.85).aspx:
match方法返回的数组有三个属性,input,index和lastIndex.input属性包含整个搜索的字符串.index属性包含匹配的子字符串在完整搜索字符串中的位置.lastIndex属性包含最后一个匹配中最后一个字符后面的位置.
请使用适当的声明:
for (var i = 0; i < matches.length; i++)
searchString += " NOT " + matches[i];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4039 次 |
| 最近记录: |