我正在搜索找到以下项目的正则表达式模式:
开始,停止,停止1,1Hz,E1.1,A3.2,Emergeny_Stop
最少1个字符,最多24个字符。 我的解决方案是:
[0-9a-zA-Z_.]{1,24}
现在我搜索一个排除只包含数字的项目的修改:
我想忽略以下项目:
11,222,5.2等
最后,我想忽略以下开头的项目: 0X 16#
是否有正则表达专业人士可以帮助我? 非常感谢。
P.S。这是一个不错的测试环境: https://regex101.com/
答案 0 :(得分:0)
^(?!0x)(?=.*?[a-z])[\w.]{1,24}$
或者,如果您的正则表达式引擎支持Unicode类,则可以使用:
^(?!0x)(?=.*?\p{L})[\p{L}\p{N}_.]{1,24}$
如果您只想否定0x
但想要包含0X
,则可以使用以下内容(假设您的正则表达式引擎支持内联修饰符):
^(?!0x)(?i)(?=.*?[a-z])[\w.]{1,24}$
Start
Stop
Stop1
1Hz
E1.1
A3.2
Emergeny_Stop
11
222
5.2
0x123
16#abc123
以下结果仅包含匹配项。
Start
Stop
Stop1
1Hz
E1.1
A3.2
Emergeny_Stop
^
在行首处断言位置(?!0x)
否定前瞻确保后续内容不匹配0x
(?=.*?[a-z])
确保后面包含一个字母的正面预测(请注意,不区分大小写的i
标志已启用,因此这也会搜索大写变体)[\w.]{1,24}
匹配集合中的任何字符(单词字符或点)1到24次$
断言行尾的位置