正则表达式匹配特定模式

时间:2015-07-09 10:59:12

标签: php regex

我在创建正则表达式方面非常苛刻,而且我正在努力解决它的问题,这是一个简单的愚蠢的正则表达式。

我正在使用PHP来完成这个匹配。这就是我现在所拥有的。

Test string: 8848842356063003
if(!preg_match('/^[0-2]|[7-9]{16}/', $token)) {
    return array('status' => 'failed', 'message' => "Invalid token", 'token' => '');
}

正则表达式必须符合以下条件:从0-2或7-9开始,并且只有16个字符。我究竟做错了什么?因为我得到了,作为匹配:

array(
  0 => 8
)

我应该得到:

array(
  0 => 8848842356063003
) 

顺便说一句:我正在使用PHP Live Regex来测试我的正则表达式字符串。

提前致谢, 战神D.

1 个答案:

答案 0 :(得分:2)

  

正则表达式必须遵守:从0-2或7-9开始,只有16个字符

您可以将起始数字放在相同的字符类中,并在匹配15个字符后使用结束锚点:

/^[0-27-9].{15}$/

如果您只想匹配数字,请使用:

/^[0-27-9]\d{15}$/