正则表达式以2个字母开头,以18位数字结尾

时间:2014-04-15 17:31:51

标签: php regex

我想用regex检查do string以2个字母开头,以18位数结尾。

我试试这个/^[A-Za-z]{2}[0-9]{18}/

3 个答案:

答案 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个字符,然后执行检查。

Demo

相关问题