我有用户提交字段的表单。字段可以包含字母,数字和标点符号。但我想检查以确保至少有3个字符是字母。我怎么能正则表达式?
例如,
$string = "ab'c";
我需要类似的东西,
if (preg_match("/[a-z]{3}/i", $string))
print "true";
else
print "false";
该字符串有三个字母,即使它有撇号。它应该测试真实。但出于某种原因,现在测试结果是假的。
任何帮助?
答案 0 :(得分:3)
对不区分大小写的匹配如何:
([a-z][^a-z]*){3}
查找3组字母和任意数量的非字母。
答案 1 :(得分:1)
你不能编写一个检查“至少x类符号”的正则表达式。当然你可以
preg_match_all('~([a-z][^a-z]*){3}~', "ab'c")
在更复杂的情况下,您可以将类替换为其他内容,然后比较结果(或者只使用preg_replace第四个参数):
preg_replace('~[a-z]~', '', "ab'c", -1, $count);
print_r($count); // prints "3"
答案 2 :(得分:1)
试试这个正则表达式:
^([0-9,]*[A-Za-z]){3}[A-Za-z0-9,]*$
您也可以删除所有非字母字符并检查长度:
if (strlen(preg_replace('/[^A-Za-z]+/', '', $str)) >= 3) {
// $str contains at least three letters
}
答案 3 :(得分:0)
试试这个:
$
匹配字符串的结尾;)
if (preg_match("/[a-zA-Z\']{3}$/i", $string))
print "true";
else
print "false";
编辑:
对不起,我误解了你的问题。试试这个:
^([a-zA-Z\']{3,}(.?))$
结果:
hell'o
< - 真实
h31l0
< - false
hello
< - true