正则表达式以匹配先生或夫人的名字

时间:2012-10-24 20:11:22

标签: php regex validation preg-match expression

谷歌没有多大帮助,所以我希望有人可以帮助我?

preg_match(‘^(MR|MRS)./s[a-z]/s[a-z]$/i’, $_POST[‘fullname’])

我需要一个正则表达式,允许一个名字与先生或太太的称呼,后跟两个由任意数量的空格分隔的文本字符串。我没有工作,我不明白为什么。提前谢谢!

3 个答案:

答案 0 :(得分:2)

正则表达式是无效的语法,它需要以相同的分隔符开始和结束:

preg_match(‘/^mrs?\.\s+[a-z]+\s+[a-z]+$/i’, $_POST[‘fullname’])
............^..........................^

知道这是一个脆弱的正则表达式使用 - 不常见,有多个名字,使用中间名,或者有一个双桶名,或者有重音符号你的名字 - 例如ZOE。

正则表达式解释

/ - start regex
^mr - string starts with mr
s? - optional "s"
\. - period
\s+ - 0 or more whitespace chars (tabs or spaces)
[a-z]+ - 0 or more letters
\s+ - 0 or more whitespace chars (tabs or spaces)
[a-z]+ - 0 or more letters
$ - end of string
/ - end of regex
i - whole regex is case insensitive.

答案 1 :(得分:1)

  

[AZ]?[a-zA-Z] {1,30} []?[。]?[']?[]?[a-zA-Z] {1,30} []?[。 ] ['] [   ]?[a-zA-Z] {0,30} []?[a-zA-Z] {0,30}

Works适用于以下名称:

  • 博士。詹姆斯马修
  • James Mathew
  • 博士。詹姆斯马修约翰
  • 詹姆斯。
  • O'Really

还有更多......

答案 2 :(得分:-1)

试试这个:

preg_match("/^(MR|MRS)\.?(\s*\w*)+$/i", $_POST[‘fullname’])

如果点不是可选的..删除“?”