正则表达式 \s 与 [ \f\n\r\t\v] 真的等效吗?

作者:vkvi 来源:ITPOW(原创) 日期:2010-8-30

正则表达式上说:\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

真的是这样吗?

先看一段代码

var str = "ITPOW www.itpow.com";
var reg = new RegExp("(.*)\s+(.*)", "gi");
alert(str.match(reg));
reg.exec(str);
alert(RegExp.$1 + "\n" + RegExp.$2);

第一个 aler 显示 null,说明没匹配起;第二个 alert 显示空白,也证实了没匹配起。

再看下面的代码

var str = "ITPOW www.itpow.com";
var reg = new RegExp("(.*)[ \f\n\r\t\v]+(.*)", "gi");
alert(str.match(reg));
reg.exec(str);
alert(RegExp.$1 + "\n" + RegExp.$2);

使用了 [ \f\n\r\t\v] 代替 \s。第一个 alert 显示“ITPOW www.itpow.com”,说明匹配起了;第二个 alert 显示两行,第一行为“ITPOW”、第二行为“www.itpow.com”,也证实了匹配起了。

由此可见

上述代码在 IE 6、Firefox、Chrome 中效果均相同,说明这二者不等效啊。

相关阅读

相关文章