2013-04-02 38 views
3

我正在尝试编写除了字母外的其他所有匹配的RegExp。到目前为止,我已经写了这样的事情:RegExp,匹配除字母外的所有内容

/[^a-zA-Z]+/ 

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

我还需要做什么才能匹配除了我的输入字符串的任何位置上的字母?

在此先感谢。

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

/^[^a-zA-Z]*$/ 
+1

'/ [^ A-ZA-Z] + /。测试('1qweqwe')'产生'true'。 –

+0

@Jack此解决方案对我无效。我找到了正确的RegExp,像这样:/^[^ a-zA-Z] * $/ – kmb

回答

3

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"]

g标志告诉正则表达式引擎之后保持遍历字符串它找到了一场比赛。如果没有g标志,它会在找到第一个匹配时放弃遍历。您可以找到参考here

+1

您的解决方案对我无效。我发现正确的RegExp是这样的:/^[^ a-zA-Z] * $ / – kmb

0

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

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

或者说,如果所有的字符必须是数字(或空字符串):

if (/^\d*$/.test(str)) { 
    // all characters are digits 
} 
相关问题