我希望得到一个仅包含字母的数组(我正在编写一个检查一句话是否为完美句的函数)。如果使用/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
只是不区分大小写,它们不应该给出相同的结果吗?这只是一个正则表达式或JavaScript的错误吗?
/g
标志,.replace()
只匹配第一次出现的情况。大多数编程语言默认应用/g
标志,但是 JavaScript 意外地没有。您必须明确添加它。此外,请记住您可以同时使用许多标志;因此,在这种情况下标记/gi
将解决您的问题。 - FactoryAidan