我需要使用正则表达式来获取用户名字的首字母以及整个姓氏。我目前的方法对于有两个名字的用户很有效,但当包含第三个名字时,代码不起作用。
这是我目前拥有的:^(.)[^ ]* (\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)。