我已经在这里和在线寻找解决方案。preg_match字母不仅字母?
问题是我只想只接受字母。但是,如果我至少输入一个字母,无论是否有符号或数字,它都会接受。我如何获得只有字母?
if (!preg_match("/[a-zA-Z]/", $_POST["firstname"]))
$error = "<br />PLease enter a valid first name";
我已经在这里和在线寻找解决方案。preg_match字母不仅字母?
问题是我只想只接受字母。但是,如果我至少输入一个字母,无论是否有符号或数字,它都会接受。我如何获得只有字母?
if (!preg_match("/[a-zA-Z]/", $_POST["firstname"]))
$error = "<br />PLease enter a valid first name";
使用/^[a-zA-Z]+$/
代替/[a-zA-Z]/
:
if (!preg_match("/^[a-zA-Z]+$/", $_POST["firstname"]))
$error = "<br />PLease enter a valid first name";
正则表达式的说明:
^
- 要匹配的字符串的开始。[]
- 匹配允许的字符。+
- 匹配一个或多个相同类型的字符。$
- 匹配字符串的结尾。Anchor你的匹配。看到这个代码:
if (!preg_match("/^[a-zA-Z]+$/", $_POST["firstname"]))
$error = "<br />PLease enter a valid first name";
^
和$
断言THES挞,比赛结束。PS您的代码中可能拼写错了“Please” - “L”在大写字母中。
那么,我不是一个正则表达式专家,但你可以创建一个函数,将精确检查你需要什么。它会去的地方沿着这些线路(该功能仅适用于较低的情况下,检查虽然):
$w = "hereisastr";
$i = 0;
while (isset($w[$i]))
{
if ($w[$i] >= 'a' && $w[$i] <= 'z')
{
$i++;
} else
{
return false;
break;
}
return true;
}
你好,我只是在这里给提示,我不想把它全部带走...... – bastienbot 2014-09-28 07:23:56
为了对付unicode的,你可以使用:
if (!preg_match("/^[- '\p{L}]+$/u", $_POST["firstname"]))
$error = "<br />PLease enter a valid first name";
我已经添加了/u
修改器的Unicode和字符- '
匹配名字像Jean-François
可能重复[我如何检查表单POST只包含使用preg \ _match多个字段上的字母](http://stackoverflow.com/questions/7828684/如何-可以-I-签一个外形后仅-CONT ains-letters-on-multiple-fields-using-preg) – 2014-09-28 07:52:39
我试过了,它不起作用,这就是为什么我问。那一个仍然让我输入数字并接受 – Anthony 2014-09-28 08:18:44