添加锚点时为什么这个正则表达式失败了?

时间:2012-04-13 02:29:02

标签: php regex preg-match

这是一场比赛:

preg_match('/[a-bA-B0-9]+/', 'username')

但这不是:

preg_match('/^[a-bA-B0-9]+$/', 'username')

为什么?

3 个答案:

答案 0 :(得分:3)

您是否在测试实际文字'username'

/[a-bA-B0-9]+/将测试a,b,A,B,0,1,2,3,4,6,6,7,8,9 的存在串。因此它将与abBa854Abba32匹配,并且匹配sjfsgfafnvesv

/^[a-bA-B0-9]+$/将测试 enitre 字符串是否由a,b,A,B,0,1,2,3,5,5,7,8组成, 9。因此它会与abBa854Abba32匹配,并且与sjfsgfafnvesv不匹配。

也许你的意思是/^[a-zA-Z0-9]+$/

答案 1 :(得分:2)

第二个不匹配,因为您告诉正则表达式将启动的序列与字符类中的其中一个项匹配。你的字符串的第一个字母是“u”,你的角色类中没有“你”[a-bA-B0-9]。

答案 2 :(得分:2)

来自here

您可以看到它只匹配a

  

结果

     找到了1场比赛:

     

阵列(       [0] => a)