繁体   English   中英

匹配3个字母数字字符的正则表达式,“ 000”,“ 001”和“ 002”除外

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM