正则表达式可以匹配除以数字开头的字符串以外的所有内容

时间:2018-09-28 03:32:17

标签: regex

嗨,这是我的第一个问题,我对regex非常陌生,希望有人能提供帮助。

我的示例数据如下:

[]

我正在尝试提出一个与列表中所有内容都匹配的正则表达式,但以数字开头的单词(例如10-16mm)除外。我想出了上述正则表达式,但是不幸的是我没有想要的正确输出。 CD3应该匹配,因为它以字母开头,数字之间的破折号(-)不应匹配。

感谢帮助!

3 个答案:

答案 0 :(得分:2)

我会使用这种模式:

(?<=^|\s)[^0-9].*?(?=$|\s)

我使用环顾四周,而不是使用单词边界。这些环顾断言断言,如果单词前面是空格或输入的开头,而单词结束则是空格或输入的结尾,则单词结束。原因是使用\b对于诸如a10-333之类的术语可能会失败。

Demo

答案 1 :(得分:1)

您可以尝试以下方法:

/\b[^\d-\s][\w-]+\b/i

其中:
\b-单词的开头和结尾
[^\d-\s]-匹配除数字,破折号和空格之外的任何字符
[\w-]+-匹配字符从a到z,从0到9和_(不区分大小写)

您可以检查此正则表达式here

答案 2 :(得分:1)

您可以这样做:

/\b([a-zA-Z]\w+)/

Demo

如果要匹配诸如a33-45之类的单词,则需要更改为:

/\b([a-zA-Z][\w\d-]+)/

Demo 2

只需将您认为是可接受的“单词”字符添加到第二个字符类[\w\d-]中,然后将您认为是可接受的单词起始字符添加到第一个字符类[a-zA-Z]中即可。