我在创建正则表达式方面非常苛刻,而且我正在努力解决它的问题,这是一个简单的愚蠢的正则表达式。
我正在使用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.
答案 0 :(得分:2)
正则表达式必须遵守:从0-2或7-9开始,只有16个字符
您可以将起始数字放在相同的字符类中,并在匹配15个字符后使用结束锚点:
/^[0-27-9].{15}$/
如果您只想匹配数字,请使用:
/^[0-27-9]\d{15}$/