Php 正则表达式名和姓

Php 正则表达式名和姓,php,regex,Php,Regex,我试图从字符串中提取firstname和lastname。用户可以在我的输入中写入以下内容:FirstName,FirstName LastName(有时全名,有时仅FirstName) 这是我的正则表达式,但它并不涵盖所有情况: preg_match('/^(?<lastName>[^\s]+)[\s](?<firstName>.+)$/', $input, $matches); preg_match('/^(?[^\s]+)[\s](?。+)$/',$input,$

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

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

preg_match('/^(?<lastName>[^\s]+)[\s](?<firstName>.+)$/', $input, $matches);
preg_match('/^(?[^\s]+)[\s](?。+)$/',$input,$matches);
此代码适用于输入,如:ab,abcde,但不适用于A


10x.

使空格和名字部分可选(注意
[\s]
(?。+)
用括号括起来,后面是问号):

…针对“A B,A B C D E”这一点:


试穿它的大小:

你能分享一个你试图从中提取的字符串的例子吗?如果用户写“LastName FirstName”,结果应该是$matches['LastName']=“LastName”和$matches['FirstName']=“FirstName”。如果输入为:Test,则结果应为$matches['lastName']=“Test”。在大多数情况下,用户会编写类似于Snow John的内容,但也有可能只编写Snow。@AmitThakur我不会解开您的问题。只需为名称输入一个图片。或者,简单地在空格上拆分如何?
^(?<lastName>[^\s]+)([\s](?<firstName>.+))?$
MATCH 1
lastName    [0-1]   `A`
MATCH 1
lastName    [0-1]   `A`
2.  [1-14]  ` B, A B C D E`
firstName   [2-14]  `B, A B C D E`