Nice programing

정규식 범위의 이스케이프 점

nicepro 2020. 11. 19. 21:58
반응형

정규식 범위의 이스케이프 점


어떤 이유로이 두 정규식은 같은 방식으로 작동합니다.

"43\\gf..--.65".replace(/[^\d.-]/g, "");​  // 43..--.65
"43\\gf..--.65".replace(/[^\d\.-]/g, "");​  // 43..--.65

데모

첫 번째 정규식에서는 dot ( .)을 이스케이프하지 않고 두 번째 정규식에서는 I do ( \.)를 수행합니다.

차이점은 무엇이며 왜 동일하게 작동합니까?


점이 문자 클래스 (대괄호 []) 안에 있기 때문 입니다.

http://www.regular-expressions.info/reference.html을 살펴보십시오 (char 클래스 섹션 아래).

^-] \를 제외한 모든 문자는 해당 문자를 문자 클래스의 가능한 일치 항목에 추가합니다.


도트 연산자 .는 문자 클래스 내에서 이스케이프 할 필요가 없습니다 [].


JavaScript를 사용하여 Regex를 테스트하는 경우 \\.대신 \..

JS가 첫 번째 백 슬래시를 제거하기 때문에 동일한 방식으로 작동합니다.


이 웹 페이지 , 나는 것을 볼 수 :

"점은 문자 클래스 내의 메타 문자가 아니므로 백 슬래시로 이스케이프 할 필요가 없습니다."

그래서 탈출은 불필요하다고 생각합니다 ...

참고 URL : https://stackoverflow.com/questions/10397968/escape-dot-in-a-regex-range

반응형