[英]Extract the middle names and last name from the string using regex of Javascript
我需要提取中間名和姓氏
Elev: 7EBB49 (Dan Greg Järgenstedt <dan.greg.smith@manu.al.edu>)
Expected: Greg Järgenstedt
Elev: 6EBB49 (Dan Järgenstedt <dan.greg.smith@manu.al.edu>)
Expected: Järgenstedt
Elev: 6EBB49 (Järgenstedt <dan.greg.smith@manu.al.edu>)
Expected: Järgenstedt
Elev: 6EBB49 (<dan.greg.smith@manu.al.edu>)
Expected:
試過
function getSNames(input) {
const names = input.match(/(?<!\[)(?<=\s)\w+(?=\s)/g);
return names ? names.join(' ') : '';
}
您可以使用
const names = input.match(/(?<!\(\p{L}+\s+|\p{L})\p{L}+(?:\s+\p{L}+)*(?=\s*<)/gu)
請參閱正則表達式演示。 u
標志啟用 Unicode 類別類。
圖案詳情
(?<!\\(\\p{L}+\\s+|\\p{L})
- 緊靠左邊,不能有(
后跟 1+ 個字母,然后是一個或多個空格,或者只是一個字母 (this用作 Unicode 字邊界)\\p{L}+
- 一個或多個字母(?:\\s+\\p{L}+)*
- 零次或多次出現 1+ 空格,然后是 1+ 字母(?=\\s*<)
- 緊靠右側,必須有 0+ 個空格,然后是<
。瘋狂就是這樣說的。
我認為您一般無法“提取中間名和姓氏”。 如果您所擁有的只是“名稱”,那么您就被它困住了。 無論你想出什么規則,我都會向你展示它行不通的地方。 例如
你所做的在一般情況下不起作用,尤其是在國際上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.