我是Regular Expression的新手并尝试编写一行代码来匹配
规则1和2正常工作但规则3没有。
任何帮助解决它?
这是我的代码:
$arr = [
'-foobar',
'foobar',
'32-xx',
'xx23',
'A2l',
'2aAA',
'_a2d',
'-A22',
'-34x',
'2--a',
'a--a-'
];
foreach( $arr as $a ){
echo check( $a );
}
function check($string){
if (preg_match("/^[a-zA-Z]+([a-zA-Z0-9_-]?){5,25}$/", $string)) {
return "$string ---------------> match was found.<br />";
} else {
return "$string ---------------> match was not found.<br />";
}
}
答案 0 :(得分:5)
第一个字符类不需要量词+
。那应该是检查第一个数字。然后,在第二个字符类中不需要?
量词。范围应为{4,24}
而不是{3,25}
。此外,您可以从那里删除不必要的捕获组。
因此,请将正则表达式修改为:
/^[a-zA-Z][a-zA-Z0-9_-]{4,24}$/