我想验证输入字段与此模式的正则表达式[A-Za-z]{,10}
我希望它只发现一个匹配,如果在输入字段中发送10个或更少的字符,我得到的问题是它会匹配所有少于10个字符的单词。使用正则表达式按长度过滤字符串
有没有办法说,如果有超过10个字符在输入字段回来为false,还是只是更好地用PHP做strlen
?
我想验证输入字段与此模式的正则表达式[A-Za-z]{,10}
我希望它只发现一个匹配,如果在输入字段中发送10个或更少的字符,我得到的问题是它会匹配所有少于10个字符的单词。使用正则表达式按长度过滤字符串
有没有办法说,如果有超过10个字符在输入字段回来为false,还是只是更好地用PHP做strlen
?
在OP和所有当前正则表达式答案中存在一个重要的语法错误:在PHP中使用大括号量词时(PCRE),您需要指定第一个数字。 (即表达式:{,10}
不是一个有效的量词!)尽管逗号和第二个数字是可选的,但是需要一个大括号量词的第一个数字。因此,表达式应该像这样指定:
if (preg_match('/^[A-Za-z]{0,10}$/', $text))
// Valid input
else
// Invalid input
如果您需要验证它只是字母,请不要使用strlen()
。相反,把边界(^$
)对您正则表达式:
/^[A-Za-z]{,10}$/
如果你只是匹配^[A-Za-z]{,10}$
它会检查整个字符串是10或更少。
^[A-Za-z]{,10}$
[email protected]#$^&$a36#&$^
将通过您的正则表达式,因为a
是它的串并a
通[A-Za-z]{,10}
如果你只在字符串的长度有关,正则表达式是严厉的,你应该使用strlen
代替。
请注意:'{,10}'是一个无效的量词。虽然:“{10,}”表示“_”匹配10次或更多次“_,但表达式”{,10}“并不意味着_”匹配0到10次“_实际上意味着:_”匹配一个左花括号,一个逗号,数字1,数字0和一个右花括号“_。要得到你想要的行为,你需要像这样指定第一个数字:'{0,10}'。 – ridgerunner