是否所有浏览器都使用正则表达式来处理多行搜索?

时间:2011-07-04 05:41:10

标签: javascript regex

所有浏览器(IE6 +,FF3 +,Safari 3 +,Chrome)是否会跨搜索字符串中的行边界执行javascript正则表达式搜索?例如:

var sourceStr = "This is some text \nOn multiple lines\nAnd the 2nd line.";
sourceStr = sourceStr.replace(/line/g, "xxx");

此外,是否有各种浏览器支持或不支持正则表达式功能的良好参考。

2 个答案:

答案 0 :(得分:3)

是的,但是如果你使用任何字符语法 - 点“。”在正则表达式模式中,您可能需要将其更改为[\s\S]以匹配跨行的任何字符。

答案 1 :(得分:1)

ECMA规范(ECMA-262)规定了可接受的正则表达式语法,并明确提到了多行支持。第15.10.2.6节特别论证了多线支持对断言的影响。

因此,如果浏览器支持ECMA-262规范,那么是的,它支持多行。

当然,您应该努力测试您的代码,然后才能确信它有效。这不是浏览器第一次无法正确实现规范。

编辑: 为了澄清,JavaScript 1.5与ECMA-262,Edition 3完全兼容。我了解以下浏览器支持JavaScript 1.5或更高版本:

  • Safari 2.0或更新版(Mac)
  • Camino 0.8或更新版(Mac)
  • Firefox 0.9或更高版本(Windows,Mac,Linux)
  • Internet Explorer 6.0或更高版本(Windows)
  • Mozilla 1.2或更新版本(Linux)
  • Netscape 7.1或更新版本(Windows,Mac)
  • Opera 8.0或更高版本(Windows,Mac,Linux)

实际上无法为Chrome找到合适的来源,但如果它不支持JavaScript> = 1.5,我会感到震惊。