javascript - 正则表达式:使用/i vs./g(/g 替换空格但/i 不替换)

标签 javascript regex

我想要一个只包含字母的数组(我正在编写一个函数来检查 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 相同的代码会得到一个包含字母以及 quick 和 brown 之间的空格的数组 (lettersArr.length = 43)。由于 /i 只是不区分大小写,他们不应该给出相同的结果吗?这只是一个 RegEx 或 Javascript 错误吗?

最佳答案

/[^a-z]+/i 匹配 [space][.] First Match[space]

当你这样做的时候

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

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


/[^a-z]+/g [T][space][.] 全局匹配

Capital T is missing here

给出 "hequickbrownfoxjumpsoverthelazydog" length = 34


所以你需要同时使用这两个标志,因为你也想匹配 capital T

/[^a-z]+/gi [space][.] 全局匹配不区分大小写

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

给出想要的字符串

“Thequickbrownfoxjumpsoverthelazydog” length = 35

之后你可以拆分它。

关于javascript - 正则表达式:使用/i vs./g(/g 替换空格但/i 不替换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50828847/

相关文章:

javascript - 如何使用 Javascript 删除 div 元素?

python - 负向后看量词未修复

javascript - 使用javascript在mvc路由的一部分中有效增加数字

javascript - 理解正则表达式

Python 正则表达式 findall 不打印所有

javascript - AmCharts - 使用 dataprovider 设置最大值轴

javascript - 从指令访问隔离范围的属性

Javascript 在实现时似乎跳过了一行(如果 count === 1)

javascript - 我使用 bootstrap.js 还是所有 14 个单独的 .js 文件有什么关系吗?尝试建立词缀行为

如果给定空白正则表达式,则 regex_replace 中的 C++ Mac OS 无限循环