提取姓名的首字母和整个姓氏

提取姓名的首字母和整个姓氏

我需要使用正则表达式来获取用户名字的首字母以及整个姓氏。我目前的方法对于有两个名字的用户很有效,但当包含第三个名字时,代码不起作用。

这是我目前拥有的:^(.)[^ ]* (\w+)$

效劳于:

  • 汤姆·琼斯→TJones。

不适用于:

  • 汤姆·史密斯·琼斯。它应该返回 TJones。

此外,我希望能够排除姓氏中的任何特殊字符 - 它应该只是字母字符。

更新:在另一篇文章中发现此代码 (\w).*(\s+\w+)$

该代码设法获取第一个字符和最后一个单词,但不会删除空格。

例如:Tom Mike Andrew Jones -> T Jones 而不是 TJones。

然后我将其更新为 (\w).*(\s+)(\w+)$,效果完美。现在我只需要弄清楚如何忽略姓氏(例如 Pierre-Louis)的特殊字符。

你们当中有谁是正则表达式专家,知道如何忽略特殊字符吗?

答案1

您可以将正则表达式更改为以下内容,

(\w).*\W+(\w+)$

而不是与任何非单词字符匹配的\s用户\W(大写 W)。

相关内容