繁体   English   中英

匹配除字母以外的所有内容的正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM