当我们有一个包含空格字符的字符串时:
var str = ' A B C D EF ';
Run Code Online (Sandbox Code Playgroud)
我们想从字符串中删除空格(我们想要这个:) 'ABCDEF'.
这两个:
str.replace(/\s/g, '')
Run Code Online (Sandbox Code Playgroud)
还有这个:
str.replace(/\s+/g, '')
Run Code Online (Sandbox Code Playgroud)
将返回正确的结果.
这是否意味着+在这种情况下这是多余的?在这种情况下,这两个正则表达式之间是否存在差异(例如,它们是否会以任何方式产生不同的结果)?
更新:性能比较 - /\s+/g更快.见这里:http://jsperf.com/s-vs-s
Bol*_*ock 195
在第一个正则表达式中,每个空格字符都被逐字符替换,空字符串.
在第二个正则表达式中,每个连续的空格字符串都被替换为空字符串,因为+.
但是,就像0乘以其他任何东西是0一样,似乎两种方法都以完全相同的方式剥离空格.
如果将替换字符串更改为'#',则差异会变得更加清晰:
var str = ' A B C D EF ';
console.log(str.replace(/\s/g, '#')); // ##A#B##C###D#EF#
console.log(str.replace(/\s+/g, '#')); // #A#B#C#D#EF#
Run Code Online (Sandbox Code Playgroud)
在匹配情况下,第一个将返回每个空格一个匹配,而第二个将返回每组空格的匹配.
结果是相同的,因为您要用空字符串替换它.例如,如果用'x'替换它,结果会有所不同.
str.replace(/\s/g, '') 将返回'xxAxBxxCxxxDxEF'
同时str.replace(/\s+/g, '')将返回'xAxBxCxDxEF'
因为\s匹配每个空格,用'x'替换每个空格,并\s+匹配空白组,用单个'x'替换多个连续的空格.
| 归档时间: |
|
| 查看次数: |
89546 次 |
| 最近记录: |