![提取姓名的第一個字母和整個姓氏](https://rvso.com/image/1595497/%E6%8F%90%E5%8F%96%E5%A7%93%E5%90%8D%E7%9A%84%E7%AC%AC%E4%B8%80%E5%80%8B%E5%AD%97%E6%AF%8D%E5%92%8C%E6%95%B4%E5%80%8B%E5%A7%93%E6%B0%8F.png)
我需要使用正規表示式來獲取使用者名字的第一個字母以及整個姓氏。我目前的程式碼對於擁有兩個名稱的使用者來說效果很好,但是當包含第三個名稱時,程式碼不起作用。
這就是我目前所擁有的:^(.)[^ ]* (\w+)$
效勞於:
- 湯姆瓊斯 → T瓊斯。
不適用於:
- 湯姆史密斯瓊斯。它應該返回 TJones。
此外,我希望能夠排除姓氏中的任何特殊字元 - 它應該只是字母字元。
更新:在不同的帖子中找到此程式碼 (\w).*(\s+\w+)$
該程式碼設法獲取第一個字元和最後一個單詞,但沒有刪除空格。
範例:Tom Mike Andrew Jones -> T Jones 而不是 TJones。
然後我將其更新為 (\w).*(\s+)(\w+)$ 並且工作完美。現在我只剩下弄清楚如何忽略姓氏的特殊字符,例如 Pierre-Louis。
你們正規表示式專家中有人知道忽略特殊字元的方法嗎?
答案1
您可以將正規表示式變更為以下內容,
(\w).*\W+(\w+)$
而不是匹配任何非單字字元的\s
user \W
(大寫 W)。