我在使用正则表达式时遇到麻烦(绝对不是我的强项,所以请对我温柔)
无法匹配:
preg_match('/^[a-zA-Z].[a-zA-Z0-9\ _]*$/', 'n');
我无法理解为什么。对于多个字符的字符串似乎没问题,只要它是一个不匹配的单个字符。
我正在尝试确保我的字符串以字母(大写或小写)开头,后跟0个或多个字符,每个字符分别是:字母(大写或小写),数字,空格或下划线。
任何人都可以开导我吗?感谢
答案 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');
在这里,我删除了点,所以现在上面的调用会成功。