PHP preg_match只有一个字符串

时间:2018-04-17 13:25:16

标签: php regex

我在使用正则表达式时遇到麻烦(绝对不是我的强项,所以请对我温柔)

无法匹配:

    preg_match('/^[a-zA-Z].[a-zA-Z0-9\ _]*$/', 'n');

我无法理解为什么。对于多个字符的字符串似乎没问题,只要它是一个不匹配的单个字符。

我正在尝试确保我的字符串以字母(大写或小写)开头,后跟0个或多个字符,每个字符分别是:字母(大写或小写),数字,空格或下划线。

任何人都可以开导我吗?感谢

1 个答案:

答案 0 :(得分:2)

您的模式实际上要求至少存在两个字符:

^[a-zA-Z].[a-zA-Z0-9\ _]*$

[a-zA-Z]字词与字母匹配,以下点.与单个其他字符匹配。因此,以下调用将成功,使用两个字符串:

preg_match('/^[a-zA-Z].[a-zA-Z0-9\ _]*$/', 'nn');

如果您打算创建一个与前导字母匹配的模式,后跟零个或多个字母,数字,反斜杠,空格或下划线,请考虑使用以下内容:

preg_match('/^[a-zA-Z][a-zA-Z0-9\ _]*$/', 'n');

在这里,我删除了点,所以现在上面的调用会成功。