正则表达式进行简单验证

时间:2014-03-20 14:13:06

标签: php regex validation

正在处理一些代码,我需要进行一些验证,因此我需要一个可以验证我输入字符串是否在AB000001到AB200000范围内的正则表达式

任何人都可以发布正则表达式,甚至是替代品会发布!!

谢谢你,

3 个答案:

答案 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匹配)用于缩短它们或更简单地工作。