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

作者:vkvi 来源:千一网络(原创) 日期:2010-8-30

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

真的是这样吗?

先看一段代码

var str = "千一网络 www.cftea.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 = "千一网络 www.cftea.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 显示“千一网络 www.cftea.com”,说明匹配起了;第二个 alert 显示两行,第一行为“千一网络”、第二行为“www.cftea.com”,也证实了匹配起了。

由此可见

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

相关阅读

你前面那位网友看了:全面接触 SQL 语法-3

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
  • 1 楼:评论
    你的结论是错误的
  • 2 楼:评论
    实际上应该写成
    var reg = new RegExp("(.*)\\s+(.*)", "gi");
    var reg = new RegExp("(.*)[ \\f\\n\\r\\t\\v]+(.*)", "gi");
    文章中第二个能匹配起来只是因为空格的关系。
  • 3 楼:评论
    楼上正解
标题:必填
内容:
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他