RegEx에 넣기 전에 이스케이프해야하는 모든 문자 목록?
누군가 이스케이프해야하는 특수 문자의 전체 목록을 제공 할 수 있습니까?
나는 그들 중 일부를 모르는 것이 두렵습니다.
preg_quote
필요한 작업을 수행하는 PHP.JS의 PHP 함수 구현을 살펴보십시오 .
특수 정규식 문자는 다음과 같습니다. . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
이 사이트 에 따르면 이스케이프 할 문자 목록은 다음과 같습니다.
[, 백 슬래시 \, 캐럿 ^, 달러 기호 $, 마침표 또는 점., 세로 막대 또는 파이프 기호 |, 물음표?, 별표 또는 별표 *, 더하기 기호 +, 여는 둥근 대괄호 ( 닫는 둥근 괄호).
그 이외에, 당신은 하나입니다, 문자열의 끝으로 자바 스크립트 인터프리터에 의해 해석되는 문자를 이스케이프 할 필요 '
나 "
.
하이픈 (-)은 대괄호 안에 있고 시작 또는 끝에 위치하지 않을 때 이스케이프해야합니다.
[a-z0-9\-_]+
탈출 할 필요가 없습니다.
[a-z0-9_-]+
Tatu Ulmanen의 답변을 바탕으로 C #의 솔루션은 다음과 같은 형식을 취했습니다.
private static List<string> RegexSpecialCharacters = new List<string>
{
"\\",
".",
"+",
"*",
"?",
"[",
"^",
"]",
"$",
"(",
")",
"{",
"}",
"=",
"!",
"<",
">",
"|",
":",
"-"
};
foreach (var rgxSpecialChar in RegexSpecialCharacters)
rgxPattern = input.Replace(rgxSpecialChar, "\\" + rgxSpecialChar);
'\'와 '.'의 위치를 바꿨습니다. 먼저 슬래시를 처리하지 않으면 '\'의 두 배가됩니다.
정규식에 대한 ESLint의 "no-useless-escape"설정과 관련하여이 목록을 찾고있었습니다. 그리고 언급 된 이러한 문자 중 일부는 JS의 정규 표현식을 위해 이스케이프 할 필요가 없다는 것을 발견했습니다. 여기에있는 다른 답변의 긴 목록은 PHP 용이며 추가 문자를 이스케이프해야합니다.
에서 ESLint이 GitHub의 문제 에 대한 반쯤, 사용자는 not-an-aardvark
이 문제에 참조 된 문자가 어쩌면 탈출해야합니다 문자 이유를 설명합니다.
자바 스크립트에서 이스케이프해야하는 문자 는 구문 문자 또는 다음 중 하나입니다.
^ $ \ . * + ? ( ) [ ] { } |
The response to the github issue I linked to above includes explanation about "Annex B" semantics (which I don't know much about) which allows 4 of the above mentioned characters to be UNescaped: ) ] { }
.
Another thing to note is that escaping a character that doesn't require escaping won't do any harm (except maybe if you're trying to escape the escape character). So, my personal rule of thumb is: "When in doubt, escape"
The problem:
const character = '+'
new RegExp(character, 'gi') // error
Smart solutions:
// with babel-polyfill
// Warning: will be removed from babel-polyfill v7
const character = '+'
const escapeCharacter = RegExp.escape(character)
new RegExp(escapeCharacter, 'gi') // /\+/gi
// ES5
const character = '+'
const escapeCharacter = escapeRegExp(character)
new RegExp(escapeCharacter, 'gi') // /\+/gi
function escapeRegExp(string){
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
}
'Program Tip' 카테고리의 다른 글
특정 Dockerfile을 빌드 할 수 없음 (0) | 2020.11.19 |
---|---|
Node.js와 Twisted의 사용 사례는 무엇입니까? (0) | 2020.11.18 |
응용 프로그램 닫기 (0) | 2020.11.18 |
생성자 상속이란 무엇입니까? (0) | 2020.11.18 |
Pycharm에서 문자열의 맞춤법 검사를 피하는 방법 (0) | 2020.11.18 |