我创建了以下搜索模式:
1)在给定范围内的搜索号码,不包括特定的号码(不包括1、2、8)
string numberPattern = @"^([3-7|9 ]*)$";2)在给定范围内搜索字母,并排除特定字符(不包括B、V)
string characterPattern = @"^(?:(?![BV])[A-Z ])+$";可以有三种输入:
ANRPIGHSAGASGG345679345679679ANRPIG34HS56A问题:
有没有办法告诉regex,如果使用数字模式,那么它会忽略字符,而对于字符模式,它会忽略数字?数据可以是混合的,按照混合顺序,我只看到了将数字和字符分组在不同的列表中,然后使用相关的模式。
是否有一种仅使用regex就能实现这一目标的方法?
发布于 2017-03-28 16:45:42
我建议用
^[3-79A-Z -[BV]]*$见regex演示。
详细信息
^ -字符串锚的开始[3-79A-Z -[BV]]* -零或更多(*)字符:3-79A-Z -从3到7、9、大写ASCII字母和空格( B和V ASCII字母除外)的数字( -[BV]是一个字符类减法结构)
$ -字符串锚的末端。发布于 2017-03-28 17:25:41
将它置于一个更易读的状态,这样您就可以维护它。
^(?:[0-9A-Z](?<![128BV]))+$
解说
^ # Beginning of string
(?: # Cluster group
[0-9A-Z] # Initially allow 0-9 or A-Z
(?<! [128BV] ) # Qualify, not 1,2,8,B,V
)+ # End cluster, must be at least 1 character
$ # End of stringhttps://stackoverflow.com/questions/43074095
复制相似问题