我正在尝试为特定字符串编写正则表达式: 每个要匹配的字符串应以数字[1-9]开头,并且可以包含也可以不包含前缀。
例如:
0 - not match
1 - match
9 - match
2: - not match
3:ABC - match
4:56ARD20 - match
5:56ARD20(any other chars except [0-9A-Z]) - not match
A:5GTS - not match (just a digits in the first part)
A1:GRT - not match (just a digits in the first part)
:FDE3 - not match (first part should contain only digits)
: - not match (empty first digital part)
因此字符串的第一部分->仅是数字(强制性)。 字符串可以包含一个后缀[0-9A-Z]的符号(:)。
谢谢!
答案 0 :(得分:3)
正则表达式^[1-9]\d*(?::[A-Z\d]+)?$
可读
^ # BOS
[1-9] \d* # Digit(s) required (can only start with 1-9
(?: # Optional group
: # Colon
[A-Z\d]+ # Upper case letters or digits
)?
$ # EOS
答案 1 :(得分:1)
尝试下一个代码
<?php
$regExp = "/^[1-9][0-9]*(:[0-9A-Z]+)?$/";
$test = array("0", "1", "2:", "3:ABC", "5:56ARD20*", "A1:GRT", " ", ":FDE3" , ":" );
foreach( $test as $val) {
echo "$val", " -> " , preg_match($regExp, $val), "\n";
}
?>
小改进:“数字”应以[1-9]开头,之后允许为0。