簡體   English   中英

RegEx:使用/ i vs. / g(/ g替換空格但/ i不替換)

[英]RegEx: Using /i vs. /g (/g replaces whitespace but /i doesn't)

我想要一個只包含字母的數組(我正在編寫一個函數來檢查pangrams)。 使用/g代碼給我一個只有字母和沒有空格的數組( lettersArr.length = 34 ):

var s = "The quick brown fox jumps over the lazy dog."
var lettersArr = s.replace(/[^a-z]+/i, "").split("");
console.log(lettersArr);

但是,使用與/i相同的代碼給出了一個包含字母的數組以及快速和棕色之間的空格( lettersArr.length = 43 )。 既然/i只是不區分大小寫,那么它們不應該給出相同的結果嗎? 這只是一個RegEx或Javascript錯誤嗎?

你沒有將g標志添加到正則表達式,所以它只替換第一個匹配,在你的情況下是第一個空格字符。

如果你添加g標志,它的工作原理是:

var s = "The quick brown fox jumps over the lazy dog."
var lettersArr = s.replace(/[^a-z]+/gi, "").split("");
console.log(lettersArr);

使用g標志意味着.replace不會在第一場比賽時停止。

請注意,如果沒有i ,陣列的長度應為35,而使用i 34,所以我不確定你是如何獲得26或28的。

/[^az]+/i匹配[空格] [。] 第一場比賽[空間]

當你這樣做

   s.replace(/[^a-z]+/i, "")

'Thequick brown fox jumps over the lazy dog.' length = 43


/[^az]+/g [T] [space] [。] 匹配全球

這里缺少Capital T.

給出"hequickbrownfoxjumpsoverthelazydog" length = 34


所以你需要使用兩個標志,因為你也想匹配大寫字母T.

/[^az]+/gi [space] [。] 匹配全局不區分大小寫

s.replace(/[^az]+/gi, "")

提供所需的字符串

"Thequickbrownfoxjumpsoverthelazydog" length = 35

之后你可以拆分它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM