我正在嘗試檢測可以采用以下格式的名稱(法語名稱)
CHARLES
CHARLES-ANTOINE
D'URENBURRY
CHARLES--ANTOINE
CHARLES ANTOINE
為此,我有以下正則運算式
/^([A-Z] (([-]{0,2}|[']|[ ])?[A-Z] )) $/
哪個有效,但 GitHub 的代碼掃描器顯示此錯誤
This part of the regular expression may cause exponential backtracking on strings containing many repetitions of 'AA'.
我理解這個錯誤,但是我不知道如何解決它。
我的問題是:如何解決。
謝謝
uj5u.com熱心網友回復:
您需要重新撰寫模式,例如
^[A-Z] (?:(?:-{1,2}|[' ])[A-Z] )*$
請參閱正則運算式演示。現在,每個后續模式將在字串內的不同位置匹配不同的字串。
詳情:
^- 字串的開始[A-Z]- 一個或多個大寫 ASCII 字母(?:(?:-{1,2}|[' ])[A-Z] )*- 零次或多次重復:(?:-{1,2}|[' ])- 匹配一個或兩個連字符、一個空格或撇號的非捕獲組[A-Z]- 一個或多個大寫 ASCII 字母
$- 字串結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432356.html
標籤:javascript 正则表达式
