我有这个电子邮件正则表达式,我想用名称正则表达式做同样的事情,所以你不能用名字写数字,我应该怎么改变它?
if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", trim($_POST['email']))) {
$emailError = 'You entered an invalid email address.';
$hasError = true;
}
我知道[a-z0-9 _.-]表示a-z 0-9和_。 - 可以使用。 但我想只使用a-z,这就是为什么我的大脑正在突破,因为我不理解整个句子,任何人都可以翻译"它只使用a-z而且没有数字__。? 我希望将其更改为名称正则表达式,这样人们就无法在其名称中写入数字。
我明白我可以写
if (!preg_match("/^[[:alnum:]][a-z]*@[a-z]+\.[a-z]{2,4}$/i", trim($_POST['name']))) {
$nameError = 'You entered invalid characters in your name.';
$hasError = true;
}
但是对我来说它没有任何意义,我应该如何进入上面的正则表达式。
但我也可以输入这个?所以我说如果它包含0-9然后它无效?但我不知道句子中所有这些字符的含义。
if (preg_match("/^[[:alnum:]][0-9]*@[0-9]+\.[0-9]{2,4}$/i", trim($_POST['name']))) {
$nameError = 'You entered invalid characters in your name.';
$hasError = true;
}
我试着研究" preg_match"但我无法找到解释,所以我可以为#34; preg_match"制作一个正则表达式。在我自己的
答案 0 :(得分:1)
您可以尝试下面的内容。
/^[a-z]+@[a-z]+\.[a-z]{2,4}$/i
[[:alnum:]]
匹配字母和数字,但POSIX [[:alpha:]]
仅匹配字母。[a-z]*
零个或多个小写字母。 [a-z]+
一个或多个小写字母。i
修饰符有助于进行不区分大小写的匹配。答案 1 :(得分:0)
如果您想了解正则表达式模式,请尝试使用http://regex101.com。这将让您分析模式的每个部分。
你可以尝试使用它,它应该做的工作:
/^[[:alpha:]][a-z]*@[a-z]+\.[a-z]{2,4}$/i
但是我使用的名称检查的简单正则表达式并没有任何问题:
/^([a-z])+$/i
虽然第一个可能更好(?),但第二个使得正则表达式在我看来更容易理解。