小编典典

/\s/g 和 /\s+/g 有区别吗?

all

当我们有一个包含空格字符的字符串时:

var str = '  A B  C   D EF ';

我们想从字符串中删除空格(我们想要这个:)'ABCDEF'

这两个:

str.replace(/\s/g, '')

和这个:

str.replace(/\s+/g, '')

将返回正确的结果。

这是否意味着+在这种情况下是多余的?在这种情况下,这两个正则表达式之间是否有区别(例如,它们是否会以任何方式产生不同的结果)?


更新:性能比较 -/\s+/g更快。见这里:http: //jsperf.com/s-vs-s


阅读 313

收藏
2022-03-03

共1个答案

小编典典

在第一个正则表达式中,每个空格字符被逐个字符替换为空字符串。

在第二个正则表达式中由于+.

但是,就像 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#
2022-03-03