首页 > 解决方案 > 在单个名称输入中验证两个名称

问题描述

我有一个单一输入的问题,它必须有两个人名输入。验证名称输入是否为字母可以正常工作,如下所示:

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" />

标签: phphtmlregex

解决方案


您可以使用以下正则表达式:

^[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


推荐阅读