Php 将名称与先生或夫人的称呼匹配的正则表达式

Php 将名称与先生或夫人的称呼匹配的正则表达式,php,regex,validation,preg-match,expression,Php,Regex,Validation,Preg Match,Expression,谷歌帮不了什么忙,所以我希望这里有人能帮我 preg_match('^(MR|MRS)。/s[a-z]/s[a-z]$/i',$\u POST['fullname']) 我需要一个正则表达式,该表达式允许一个名称后面带有先生或夫人的称呼,后跟两个由任意数量的空格分隔的文本字符串。我的坏了,我也不知道为什么。提前谢谢你 试试这个: preg_match("/^(MR|MRS)\.?(\s*\w*)+$/i", $_POST[‘fullname’]) 如果点不是可选的。。删除“?”正则表达式的语法

谷歌帮不了什么忙,所以我希望这里有人能帮我

preg_match('^(MR|MRS)。/s[a-z]/s[a-z]$/i',$\u POST['fullname'])

我需要一个正则表达式,该表达式允许一个名称后面带有先生或夫人的称呼,后跟两个由任意数量的空格分隔的文本字符串。我的坏了,我也不知道为什么。提前谢谢你

试试这个:

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

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

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

preg_match(‘/^mrs?\.\s+[a-z]+\s+[a-z]+$/i’, $_POST[‘fullname’])
............^..........................^
但是要知道,这是一个脆弱的正则表达式,使用多个名字、使用中间名、使用双筒姓氏或在你的名字中使用重音符号并不少见,例如Zöe

正则表达式解释 [A-Z]?[A-zA-Z]{1,30}[]?[.]?[']?[']?[']?[']?[']?[A-zA-Z]{1,30}[]?[.]?['][ ]?[a-zA-Z]{0,30}[]?[a-zA-Z]{0,30}

适用于以下名称:

  • 詹姆斯·马修博士
  • 詹姆斯·马修
  • 博士。詹姆斯·马修·约翰
  • 詹姆斯先生
  • 真的吗

还有更多…

这会匹配MR.结尾的尾随点吗?是的,谢谢,忘了。。。他补充道。在MR之后(感谢-1…),为了它的价值,我没有-1你的答案-我倾向于只有当答案明显严重错误时才投反对票。如果我认为您可能忽略了这一点,那么我只需添加一条注释即可;运行它只会抛出一个错误。另外,使用*意味着它与“mr.”匹配,mr.”不是一个名字。你应该避开圆点,选择它。谢谢!这个有效。我知道它应该允许使用其他字符,但这些是我必须遵循的规则。您是否希望输入这样的字符串:“Wood先生说不”。因为如果是这样的话还有很多事情要做。。。
/ - 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.