6

我正在尝试编写匹配除字母之外的所有内容的正则表达式。到目前为止,我已经写了这样的东西:

/[^a-zA-Z]+/

但是,在测试过程中,我发现当我写例如“qwe”或“qqqqqweqwe123123”或类似的东西时它工作得很好,但是当我从数字开始字符串时,例如:“1qweqwe”,它不匹配。

除了输入字符串的任何位置的字母之外,我还需要做什么才能匹配所有内容?

提前致谢。

编辑:我发现的正确正则表达式是:

/^[^a-zA-Z]*$/
4

2 回答 2

6

除了输入字符串的任何位置的字母之外,我还需要做什么才能匹配所有内容?

您需要使用正则表达式标志来实现这一点

尝试这个

'1qwe2qwe'.match(new RegExp(/[^a-zA-Z]+/g))

它应该返回["1", "2"]

g正则表达式末尾的标志告诉正则表达式引擎在找到一个匹配项后继续遍历字符串。如果没有g标志,它只会在找到第一个匹配项时放弃遍历。你可以在这里找到参考

于 2013-04-02T08:45:45.420 回答
1

您的正则表达式未锚定,因此它将产生true部分匹配。如果整个字符串不应包含字母:

if (/^[^a-zA-Z]+$/.test(str)) {
    // all characters are not alphabetical
}

或者更确切地说,如果所有字符都必须是数字(或空字符串):

if (/^\d*$/.test(str)) {
    // all characters are digits
}
于 2013-04-02T10:43:59.533 回答