[英]RegExp that match everything except letters
我正在尝试编写匹配除字母之外的所有内容的 RegExp。 到目前为止,我已经写了这样的东西:
/[^a-zA-Z]+/
但是,在测试期间,我发现它在我编写例如:'qwe' 或 'qqqqqweqwe123123' 或类似的东西时效果很好,但是当我从数字开始字符串时,例如:'1qweqwe',它不匹配。
除了输入字符串的任何位置的字母之外,我还需要做什么来匹配所有内容?
提前致谢。
编辑:我发现的正确 RegExp 是:
/^[^a-zA-Z]*$/
除了输入字符串的任何位置的字母之外,我还需要做什么来匹配所有内容?
您需要使用正则表达式标志来实现这一点
试试这个
'1qwe2qwe'.match(new RegExp(/[^a-zA-Z]+/g))
它应该返回["1", "2"]
正则表达式末尾的g
标志告诉正则表达式引擎在找到匹配项后继续遍历字符串。 如果没有g
标志,它只会在找到第一个匹配项时放弃遍历。 你可以在这里找到参考
您的正则表达式未锚定,因此对于部分匹配,它会产生true
。 如果整个字符串不应包含字母:
if (/^[^a-zA-Z]+$/.test(str)) {
// all characters are not alphabetical
}
或者更确切地说,如果所有字符都必须是数字(或空字符串):
if (/^\d*$/.test(str)) {
// all characters are digits
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.