javascript - tag中文 - w3school




/ \ s/g和/ \ s+/ g之間有區別嗎? (3)

+表示“一個或多個字符”,沒有加號表示“一個字符”。 在您的情況下,兩者都會產生相同的輸出。

當我們有一個包含空格字符的字符串時:

var str = '  A B  C   D EF ';

我們想從字符串中刪除空格(我們想要這個: 'ABCDEF' )。

這兩個:

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

還有這個:

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

將返回正確的結果。

這是否意味著+在這種情況下是多餘的? 在這種情況下,這兩個正則表達式之間是否存在差異(例如,它們是否會以任何方式產生不同的結果)?

更新:性能比較 - /\s+/g更快。 見這裡: http://jsperf.com/s-vs-shttp://jsperf.com/s-vs-s


\s表示“一個空格”, \s+表示“一個或多個空格”。

但是,因為你正在使用/g標誌(替換所有出現)並用空字符串替換,所以你的兩個表達式具有相同的效果。


在第一個正則表達式中, 每個空格字符都被逐字符替換,空字符串。

在第二個正則表達式中, 每個連續的空格字符串由於+而被替換為空字符串。

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




regex