在RegEx之前应该转义的所有字符的列表?
有人可以给出一个完整的特殊字符列表,应该逃脱吗?
我担心我不知道其中的一些。
看一下PHP.JS的PHP的preg_quote
函数的实现,应该做你需要的:
特殊的正则expression式字符是: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
根据这个网站 ,逃脱的人物名单是
[,反斜杠\,插入符号^,美元符号$,句号或圆点,竖线或竖线符号,问号,星号或星号,加号+,圆括号和结束圆括号)。
除此之外,您还需要将Javascript解释器解释的字符转义为string的结尾,即'
或"
。
连字符( – )需要在方括号内的时候进行转义,而不是在开头或结尾处,例如:需要转义
[a-z0-9\-_]+
没有必要逃避 – 为
[a-z0-9_-]+
基于Tatu Ulmanen的回答,我在C#中的解决scheme采取了这样的forms:
private static List<string> RegexSpecialCharacters = new List<string> { "\\", ".", "+", "*", "?", "[", "^", "]", "$", "(", ")", "{", "}", "=", "!", "<", ">", "|", ":", "-" }; foreach (var rgxSpecialChar in RegexSpecialCharacters) rgxPattern = input.Replace(rgxSpecialChar, "\\" + rgxSpecialChar);
请注意,我已经改变了'\'和'。'的位置,未能先处理斜杠会导致'\'的翻倍