我正在尝试编写与除字母之外的所有内容匹配的RegExp。到目前为止,我写过这样的话:
/[^a-zA-Z]+/
然而,在测试过程中,我发现它在我编写例如:'qwe'或'qqqqqweqwe123123'或类似的东西时效果很好,但是当我从数字开始字符串时,例如:'1qweqwe',它没有'匹配。
我还需要做什么来匹配除输入字符串的任何位置的字母以外的所有内容?
提前致谢。
编辑:正确的RegExp我发现是:
/^[^a-zA-Z]*$/
答案 0 :(得分:4)
What do I have to do yet to match everything except letters at any position of my input String?
。
您需要使用正则表达式标志来实现此
试试这个
'1qwe2qwe'.match(new RegExp(/[^a-zA-Z]+/g))
它应该返回["1", "2"]
regexp末尾的g
标志告诉regexp引擎在找到一个匹配项后继续遍历字符串。没有g
标志,它只是在找到第一场比赛时放弃遍历。您可以找到参考here
答案 1 :(得分:1)
您的正则表达式未锚定,因此对于部分匹配,它将产生true
。如果整个字符串不应包含字母:
if (/^[^a-zA-Z]+$/.test(str)) {
// all characters are not alphabetical
}
或者更确切地说,如果所有字符都必须是数字(或空字符串):
if (/^\d*$/.test(str)) {
// all characters are digits
}