使用正则表达式按长度过滤字符串

时间:2011-07-15 23:30:03

标签: php regex

我正在尝试使用此模式[A-Za-z]{,10}使用正则表达式验证输入字段 我希望它只在输入字段中发送10个或更少的字符时找到匹配,我得到的问题是它将匹配所有小于10个字符的字。

有没有办法说输入字段中是否有超过10个字符返回为假,或者用php进行strlen是否更好?

5 个答案:

答案 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代替。