我想用regex检查do string以2个字母开头,以18位数结尾。
我试试这个/^[A-Za-z]{2}[0-9]{18}/
答案 0 :(得分:4)
您错过了锚$
/^[A-Za-z]{2}[0-9]{18}$/
^ here
答案 1 :(得分:4)
从字面上理解你的问题,这将有效:
/^[A-Za-z]{2}.*[0-9]{18}$/
此表达式还将匹配字母和数字之间包含任意数量字符的字符串。
答案 2 :(得分:4)
如果字符串很长,非正则表达式解决方案可能更有效:
if (ctype_alpha(substr($str, 0, 2)) &&
is_numeric(substr($str, -18))) {
# code...
}
即使字符串的长度超过20个字符,也能正常工作。与正则表达式不同,这不需要扫描整个字符串 - 它直接提取前两个字符和后18个字符,然后执行检查。