我正在尝试使用此模式[A-Za-z]{,10}
使用正则表达式验证输入字段
我希望它只在输入字段中发送10个或更少的字符时找到匹配,我得到的问题是它将匹配所有小于10个字符的字。
有没有办法说输入字段中是否有超过10个字符返回为假,或者用php进行strlen
是否更好?
答案 0 :(得分:3)
如果您需要验证它只是字母,请不要使用strlen()
。相反,将边界(^$
)放在正则表达式上:
/^[A-Za-z]{,10}$/
答案 1 :(得分:1)
OP在这里有一个重要的语法错误和所有当前的正则表达式答案:当使用大括号量词与PHP(PCRE)时,您需要指定第一个数字。 (即表达式:{,10}
不是有效的量词!)虽然逗号和第二个数字是可选的,大括号量词中的第一个数字是必需的。因此,表达式应该像这样指定:
if (preg_match('/^[A-Za-z]{0,10}$/', $text))
// Valid input
else
// Invalid input
答案 2 :(得分:0)
如果您只匹配^[A-Za-z]{,10}$
,它将检查整个字符串是否为10或更少。
答案 3 :(得分:0)
^[A-Za-z]{,10}$
$@#$^&$a36#&$^
会通过您的正则表达式,因为a
是其子字符串,a
传递[A-Za-z]{,10}
答案 4 :(得分:0)
如果您只对字符串的长度感兴趣,那么正则表达式很重要,您应该使用strlen
代替。