2

这是一场比赛:

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

但这不是:

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

这是为什么?

4

3 回答 3

3

你在测试实际的文字'username'吗?

/[a-bA-B0-9]+/将测试字符串中任意位置是否存在 a,b,A,B,0,1,2,3,4,5,6,7,8,9 。所以它会匹配abBa854Abba32,它会匹配sjfsgfafnvesv

/^[a-bA-B0-9]+$/将测试整个字符串是否由 a,b,A,B,0,1,2,3,4,5,6,7,8,9 组成。所以会匹配abBa854Abba32,也不会匹配sjfsgfafnvesv

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

于 2012-04-13T02:34:03.883 回答
2

第二个不匹配,因为您已告诉正则表达式匹配以字符类中的这些项目之一开头的序列。您的字符串的第一个字母是“u”,并且您的字符类 [a-bA-B0-9] 中没有“u”。

于 2012-04-13T02:34:06.497 回答
2

这里

你可以看到它只匹配a

结果

找到 1 个匹配项:

数组 ( [0] => a )

于 2012-04-13T02:37:42.467 回答