对于线路输入“Abcd abcd1a 5ever qw3-fne superb5 1234 0”
我正在尝试匹配包含字母和数字的单词,例如“Abcd”,“abcd1a”,“5ever”,“superb5”,“qw3”,“fne”。但它不应该匹配只有数字的单词,比如“1234”,“0”。
除了上述字母数字之外,所有字符都会分隔单词。
我尝试了这个正则表达式(?![0-9])([A-Za-z0-9] +),它与单词“5ever”不匹配,但适用于其他所有内容。
如何编写此正则表达式以使其与“5ever”一词完全匹配?
答案 0 :(得分:4)
\b(?!\d+\b)[^\W_]+
\b(?!\d+\b)[A-Za-z\d]+
\b(?!\d+\b)[a-z\d]+ # With case-insensitive flag enabled
\b
断言位置为单词边界(?!\d+\b)
否定前瞻确保整个单词不仅由数字组成[^\W_]+
或[A-Za-z\d]+
仅匹配字母或数字一次或多次另一个选项seen in use here(启用不区分大小写的i
标志):
\b\d*[a-z][a-z\d]* # With case-insensitive flag enabled
\b\d*[A-Za-z][A-Za-z\d]*
\b
断言位置为单词边界\d*
任意次数匹配[a-z]
匹配任何字母(启用了i
标记,这也匹配A-Z
)[a-z\d]*
任意次数匹配任何字母或数字匹配字符串Abcd abcd1a 5ever qw3-fne superb5 1234 0
中的以下内容:
Abcd
abcd1a
5ever
qw3
fne
superb5
答案 1 :(得分:0)
我想出了以下正则表达式:
/\d*[a-z_]+\w*/ig
\d*
以可能的数字开头[a-z_]+
在一个或多个数字中包含字母或下划线\w*
可能后跟字母后面的任何字符ig
案例我 nsensitive和 g lobal flags DEMO详细解释