正在处理一些代码,我需要进行一些验证,因此我需要一个可以验证我输入字符串是否在AB000001到AB200000范围内的正则表达式
任何人都可以发布正则表达式,甚至是替代品会发布!!
谢谢你,
答案 0 :(得分:2)
正则表达式对于这个很难,并且正则表达式也可能看起来很可怕。
而不是正则表达式,您可以将字符串拆分为两部分,第一部分只有AB
,第二部分只有数字。然后检查数字是否在范围内。
$string = "AB200000";
$splits = preg_split("/(?<=^AB)(?=\d{6}$)/", $string);
if($splits[1] >= 1 && $splits[1] <= 200000){
print "bingo!\n";
}
您可以使用substr()
代替preg_split()
。
答案 1 :(得分:0)
如果您使用的是PHP,可以使用substr:
function verif($input){
return ((((substr($input, 0, 2) == 'AB') && (substr($input, 2, 6) >= 1)) && (substr($input, 2, 6) <= 200000)) );
}
答案 2 :(得分:0)
不是你想要的,而是一个简单的开始使用可怕的正则表达式方法:
AB[012][0-9][0-9][0-9][0-9][0-9] # would match AB000000 to AB299999
AB[012][0-9]{5} # (same) matches AB000000 to AB299999
AB([01][0-9]{5}|200000) # matches AB000000 to AB200000 (tantalisingly close)
您希望排除AB000000和AB200001(及以上)的尴尬:)
将AB000001与AB099999匹配:
AB(0[0-9][0-9][0-9][0-9][1-9]|0[0-9][0-9][0-9][1-9][0-9]|0[0-9][0-9][1-9][0-9][0-9]|0[0-9][1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9][0-9][0-9])
将AB000001与AB200000相匹配:
AB([12]00000|[01][0-9][0-9][0-9][0-9][1-9]|[01][0-9][0-9][0-9][1-9][0-9]|[01][0-9][0-9][1-9][0-9][0-9]|[01][0-9][1-9][0-9][0-9][0-9]|[01][1-9][0-9][0-9][0-9][0-9])
以编程方式匹配AB([0-9] {6}),将数字放入变量会更好。 然后检查号码&gt; 0和数字&lt; = 200000。
regexp可能可能会收紧,并且不同的方法(例如数字上的NOT匹配)用于缩短它们或更简单地工作。