regex 用正则表达式排除特殊字符串

sd2nnvve  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(157)

我需要排除以下字符串格式

APXXXX.XXXX.XXXX

(X是十六进制字符A-F、a-f或0-9)。AP是固定的,后面是3组4个十六进制字符,由一个点分隔。十六进制字符可以是大写或小写字母。
但其他字符串,如

APLS1001
apcn5001
aplscha6
APUS4005
APLSC453

必须通过正则表达式匹配。在这些字符串中没有点。
有什么想法吗。先谢了
我尝试了很多,但没有好的结果。

lh80um4z

lh80um4z1#

这个正则表达式:

^(?![aA][pP][[:xdigit:]]{4}\.[[:xdigit:]]{4}\.[[:xdigit:]]{4}$)\w+$

Regex Demo

正则表达式匹配如下:

| 节点|解释|
| --|--|
| ^|字符串锚的开头|
| (?!|看看是否有:|
| [aA]|任何特征:'a','A'|
| [pP]|任何特征:“P”,“P”|
| [[:xdigit:]]{4}|任何特征:十六进制数字(a- f,A-F,0-9)(4次)|
| \.|- 是的|
| [[:xdigit:]]{4}|任何特征:十六进制数字(a- f,A-F,0-9)(4次)|
| \.|- 是的|
| [[:xdigit:]]{4}|任何特征:十六进制数字(a- f,A-F,0-9)(4次)|
| $|在可选的\n之前,字符串锚的结尾|
| )|先行结束|
| \w+|单词字符(a-z,A-Z,0-9,_)(1次或多次(匹配最大可能量))|
| $|在可选的\n之前,字符串锚的结尾|

fhg3lkii

fhg3lkii2#

我试着做了一个如下的正则表达式模式,可以完全完成你的前辈:

^(?!AP[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$)[A-Za-z0-9]+$

对此的解释:
^字符串的开头。
(?! ... )是一个负先行Assert。它是一个非捕获组,检查特定的模式,但不包括在匹配中。它用于Assert某个条件未满足。在这种情况下,它会检查是否存在模式。
AP字面意思是“AP”。模式的这一部分检查输入开头的特定字符串“AP”。
[0-9A-Fa-f]{4}只匹配四个字符。它可以是以下集合中的任何字符:0-9:数字0到9。A-F:大写十六进制字母A到F。a-f:小写十六进制字母a到f。\.:匹配点(句点)字符。由于点是正则表达式中的特殊字符,因此需要使用反斜杠对其进行转义,才能将其视为文字点。
[0-9A-Fa-f]{4}(重复三次):这部分类似于前面的[0-9A-Fa-f]{4},但重复了三次。它确保有三组字符,每组正好有四个字符,由点分隔。
$声明字符串的结尾。它确保模式应用于整个字符串,这意味着在第三组四个字符和最后一个点之后没有字符。
[A-Za-z0-9]+匹配一个或多个字母数字字符(字母或数字)。
$字符串的结尾。
编辑:添加了正则表达式的详细解释。

相关问题