php - 在单个名称输入中验证两个名称
问题描述
我有一个单一输入的问题,它必须有两个人名输入。验证名称输入是否为字母可以正常工作,如下所示:
if(!preg_match("/^[a-zA-Z'-]+$/", $_POST['name'] )){
echo 'name must be letters';
}
这只会验证一个名称,例如:John。但我需要验证字符串是否包含两个单词。像詹姆斯·多伊
这是表单输入:
<input autofocus id="aum" name="name" placeholder="John Doe" type="text" />
解决方案
您可以使用以下正则表达式:
^[a-zA-Z'-]+ [a-zA-Z'-]+$
请记住,您不允许使用其他所有字符(例如外语)。因此最好使用任何可能的单词字符。对于 PHP,这将是\p{L}
^\p{L}+ \p{L}+$
您还可以使用多个空格 ( ^\p{L}+ +\p{L}+$
) 或任何类型的空格的多个空格:
^\p{L}+\s+\p{L}+$
这是一个活生生的例子:https ://regex101.com/r/aUkUKa/2
推荐阅读
- imagemagick - Imagemagick:缩放图片直到适合 DIN A4 尺寸
- linux - 内核创建的线程的亲和性可以由“cpuset”设置吗?
- javascript - 如果授权,快递服务 javascipt 文件
- laravel - 如何在 github 上发布 laravel 站点?
- asp.net-core - 询问所有用户声明以检查重复项
- php - 显示数据库行中的数据时为列创建重复区域
- python-3.x - 'list' 对象在从 XML 获取信息时没有属性'get' Python3.8
- javascript - 如何创建一个内部有圆角的容器?
- python - 如何在保留所有其他工作表的同时覆盖现有 Excel 工作表上的数据?
- c++ - 在属性页中找不到 VS 2019 项目默认值