正则表达式名字和姓氏

时间:2015-03-06 13:27:50

标签: php regex

我正在尝试从字符串中提取firstname和lastname。用户可以在我的输入中写入以下内容:FirstName,FirstName LastName(有时是全名,有时只有名字)。

这是我的正则表达式,但它并未涵盖所有情况:

preg_match('/^(?<lastName>[^\s]+)[\s](?<firstName>.+)$/', $input, $matches);

此代码适用于以下输入:A B,A B C D E,但不适用于A.

10倍。

1 个答案:

答案 0 :(得分:1)

使空格和名字部分可选(注意[\s](?<firstName>.+)包含在括号中,后跟一个问号):

^(?<lastName>[^\s]+)([\s](?<firstName>.+))?$

...反对&#34; A&#34;抓住这个:

MATCH 1
lastName    [0-1]   `A`

...反对&#34; A B,A B C D E&#34;这样:

MATCH 1
lastName    [0-1]   `A`
2.  [1-14]  ` B, A B C D E`
firstName   [2-14]  `B, A B C D E`

尝试使用尺寸:https://regex101.com/r/zO5zR6/1