[英]Regular expression to match 3 alphanumeric chars except '000' “001” and '002'
我需要一个与任何3个字母数字字符(例如[0-9A-Z] {3})匹配但不包括000 001 002的模式
AAA - pass
003 - pass
123 - pass
000 - fail
001 - fail
002 - fail
更新:对不完整的问题感到抱歉。 这3个字母数字实际上是较大模式的一部分:QUEO_BK20 \\ d {2}(0 [1-9] | 1 [012])(0 [1-9] | [12] [0-9] | 3 [01] )(?! 00 [012]) [0-9A-Z] {3} .csv
像(?!00 [012])[0-9A-Z] {3}之类的模式仅适用于3个字符,而不是整个模式的一部分。
我正在使用.NET
如果您的正则表达式引擎支持它,请使用先行断言:
(?!00[012])[0-9A-Z]{3}
您可以添加否定的前瞻,例如
(?!000|001|002)[0-9A-Z]{3}
最简单的两种模式:
if (/^[0-9A-Z]{3}\z/ && !/^00[0-2]\z/)
或者,如果您想要一个实际的正则表达式:
[1-9A-Z][0-9A-Z]{2}|0[1-9A-Z][0-9A-Z]|00[3-9A-Z]
并非所有的编程逻辑都需要在正则表达式中。 您可以使您的主要编程逻辑也能正常工作。
在Perl中执行此操作的代码,但是您有了主意:
if ( $x =~ /^[0-9A-Z]{3}$/ && $x !~ /^00[012]$/ ) {
# passed...
=~
表示“匹配”,而!~
表示“不匹配”。 我建议,其意图要比涉及负面前瞻的任何事情都要明确得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.