2011-02-24 34 views

回答

59

看看PHP.JS的實現PHP的preg_quote功能,是應該做的,你需要什麼:

http://phpjs.org/functions/preg_quote:491

特殊的正則表達式字符是:. \ + * ? [^] $ () { } = ! < > | : -

+0

Naaah我手動將它們設置爲就緒模式。也許以後會創建減小文件大小的函數。所以我忘了+ =! <>:和 - 是完整列表嗎?感謝隊友;) – Somebody 2011-02-24 13:29:22

+0

猜你知道你在說什麼。 :)確定答案已關閉然後,稍後我會接受,也許有人必須添加。 :) – Somebody 2011-02-24 13:32:50

+2

如果你用str_replace轉義這些,你應該首先轉義。在上面的列表中,如果a。被替換爲\。,\。將被替換爲\\。,這不是我們想要的。當然, – 2013-11-06 17:03:02

9

this site,人物逃脫的名單

[,反斜槓\,這個^,美元符號$,句點或點,豎線或管道符號|。,問號?,星號或星號*,加號+,圓括號(以及圓括號)。

除此之外,你需要逃避由JavaScript解釋爲字符串的結尾解釋的字符,要麼是'"

+0

不知道該怎麼做的網站。它涵蓋了很多RegEx的風味,並沒有指定這些列表適用於哪些。 – BaldEagle 2016-07-30 15:20:53

3

的連字符( - )在方括號內時需要轉義,並且不位於開頭或結尾處 需要轉義 - 爲

[a-z0-9\-_]+ 

無需逃避 - 基於關大肚Ulmanen的回答爲

[a-z0-9_-]+ 
1

,我在C#中解決了這種形式:

private static List<string> RegexSpecialCharacters = new List<string> 
{ 
    "\\", 
    ".", 
    "+", 
    "*", 
    "?", 
    "[", 
    "^", 
    "]", 
    "$", 
    "(", 
    ")", 
    "{", 
    "}", 
    "=", 
    "!", 
    "<", 
    ">", 
    "|", 
    ":", 
    "-" 
}; 


foreach (var rgxSpecialChar in RegexSpecialCharacters) 
       rgxPattern = input.Replace(rgxSpecialChar, "\\" + rgxSpecialChar); 

注意我已經改變了'\'和'。'的位置,未能先處理斜槓會導致'\'的加倍。\'s'

0

我一直在尋找關於ESLint的reg-ex的「無用的轉義」設置的列表。並且發現其中一些提到的這些字符不需要爲JS中的正則表達式轉義。其他答案中的較長列表是PHP,它確實需要額外的字符才能被轉義。

this github issue for ESLint大約一半的時候,用戶not-an-aardvark解釋了爲什麼在問題中引用的字符是一個可能會被轉義的字符。

在JavaScript中,需要被轉義字符是否爲syntax character,或者這些中的一個:

^ $ \ . * + ? () [ ] { } |

到github上問題我上方連結該響應包括關於「附件B」的語義解釋(我不太瞭解),它允許上述字符中的4個被解除封鎖:) ] { }

另一件需要注意的是,逃避不需要轉義的角色不會造成任何傷害(除非您試圖逃避轉義角色)。所以,我個人的經驗法則是:「如果有疑問,逃脫」

相關問題