0

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

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

我需要一个正则表达式,它允许名字带有先生或夫人的称呼,后跟两个由任意数量的空格分隔的文本字符串。我的不工作,我不知道为什么。先感谢您!

4

3 回答 3

2

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

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

但是要知道,这是一个脆弱的正则表达式使用 -有多个名字,使用中间名,或者有双桶姓氏,或者在你的名字中有重音 - 例如 Zöe并不少见。

正则表达式解释

/ - 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.
于 2012-10-24T20:15:57.280 回答
1

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

适用于以下名称:

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

还有很多...

于 2014-07-11T17:30:05.600 回答
-1

尝试这个 :

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

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

于 2012-10-24T20:14:53.957 回答