用于简单验证的正则表达式


Regex For a Simple Validation

我正在研究一些代码,我需要有一些验证,所以我需要一个正则表达式,可以验证我检查输入的字符串是否在AB000001到AB200000的范围内

谁能发布正则表达式或甚至替代将做!!

谢谢问候,

Regex对于这个来说是困难的,而且那个Regex可能看起来也很难看。

代替正则表达式,您可以将字符串分成两部分,第一部分将只有AB,第二部分将只有数字。然后检查数字是否在范围内。

$string = "AB200000";
$splits = preg_split("/(?<=^AB)(?='d{6}$)/", $string);
if($splits[1] >= 1 && $splits[1] <= 200000){
    print "bingo!'n";
}

可以用substr()代替preg_split()

如果你使用PHP你可以使用substr:

function verif($input){ return ((((substr($input, 0, 2) == 'AB') && (substr($input, 2, 6) >= 1)) && (substr($input, 2, 6) <= 200000)) ); }

不是你想要的,而是一个简单的开始丑恶的regexp方法:

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(及以上):)

match AB000001 to 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])     

match AB000001 to 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}),将number放入变量中。然后检查number> 0 AND number <= 200000

regexp可能会更紧凑,并使用不同的方法(例如对数字进行NOT匹配)使它们更短或更简单。