如何为具有字母数字字符但不仅由数字组成的单词编写正则表达式



对于行输入"Abcd abcd1a 5ever qw3-fne superb5 1234 0">

我正在尝试匹配带有字母和数字的单词,例如"abcd","abcd1a","5ever","superb5","qw3","fne"。但它不应该匹配只有数字的单词,如"1234"、"0"。

单词由除上述字母数字以外的所有字符分隔。

我试过这个正则表达式(?![0-9])([A-Za-z0-9]+( 与单词"5ever"不匹配,但适用于其他所有内容。

我如何编写此正则表达式,使其也完全匹配单词"5ever"?

选项 1 - 负面展望

在此处查看正在使用的正则表达式

b(?!d+b)[^W_]+
b(?!d+b)[A-Za-zd]+
b(?!d+b)[a-zd]+         # With case-insensitive flag enabled
  • b 断言位置作为单词边界
  • (?!d+b) 负前瞻,确保整个单词不仅仅由数字组成
  • [^W_]+[A-Za-zd]+ 仅匹配字母或数字一次或多次

选项 2 - 无前瞻

此处使用的另一种替代方法(启用不区分大小写i标志(:

bd*[a-z][a-zd]*          # With case-insensitive flag enabled
bd*[A-Za-z][A-Za-zd]*
  • b 断言位置作为单词边界
  • d* 匹配任意数字任意次数
  • [a-z]匹配任何字母(启用i标志,这也匹配A-Z(
  • [a-zd]* 匹配任意字母或数字任意次数

匹配字符串Abcd abcd1a 5ever qw3-fne superb5 1234 0中的以下内容:

Abcd
abcd1a
5ever
qw3
fne
superb5

我想出了以下正则表达式:

/d*[a-z_]+w*/ig
  •        d*以可能的数字开头
  • [a-z_]+包含数量 1 和多个的字母或下划线
  •         w*可能后跟任何字符
  •           ig 案例 i敏感和 g叶标志

带有详细说明的演示

最新更新