정규식으로 백 슬래시를 벗어날 수 없습니까? 그것이 추악하다는 것을 알고 있지만

다음 정규식을 사용하고 있습니다.

^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$

나는 그것이 추악하다는 것을 알고 있지만 지금까지 그것이 탈출했기 때문에 내가 생각하는 것처럼 백 슬래시가 허용되지 않는 것 이외의 목적에 부합 하지만 동일한 결과 \\대신 시도 했습니다 \\\. 어떤 아이디어?



답변

당신은 프로그램 내에서 문자열이 퍼팅하는 경우, 당신은 실제로 그것을 “드 탈출”할 때 문자열 파서 그 두 가지를 제거하기 때문에 (네 개의 백 슬래시를 사용해야 할 수도 문자열 , 다음 정규식은 두 가지가 필요합니다 이스케이프 정규식 백 슬래시).

예를 들면 :

regex("\\\\")

다음과 같이 해석됩니다.

regex("\\" [escaped backslash] followed by "\\" [escaped backslash])

다음과 같이 해석됩니다.

regex(\\)

단일 백 슬래시와 일치하는 정규식으로 해석됩니다.


언어에 따라 이스케이프 시퀀스를 구문 분석하지 않는 다른 형식의 따옴표를 사용할 수 있습니다. 예를 들어 Python에서 :

re.compile(r'\\')

r따옴표의 전면은 그것을 만드는 원료 되지 해석 백 슬래시 이스케이프를하지 문자열입니다.


답변

리터럴이 아니라면 이스케이프 된 백 슬래시를 의미 \\\\하도록 을 사용해야 \\합니다.

두 가지 표현이 있기 때문입니다. 정규식의 문자열 표현 "\\\\"에는 파서로 전송되는,이 있습니다. 파서는 \\유효한 이스케이프 백 슬래시 (단일 백 슬래시와 일치)로 해석되는 것을 확인합니다.


답변

백 슬래시 \는 정규식의 이스케이프 문자입니다. 따라서 이중 백 슬래시는 실제로 단일 문자 백 슬래시를 의미합니다.

\ (backslash) followed by any of [\^$.|?*+(){} escapes the special character to suppress its special meaning.

심판 : http://www.regular-expressions.info/reference.html


답변

에서 http://www.regular-expressions.info/charclass.html :

문자 클래스 내의 유일한 특수 문자 또는 메타 문자는 닫는 대괄호 (]), 백 슬래시 (\\), 캐럿 (^) 및 하이픈 (-)입니다. 일반적인 메타 문자는 문자 클래스 내의 일반 문자이며 백 슬래시로 이스케이프 할 필요가 없습니다. 별표 또는 더하기를 검색하려면 [+ *]를 사용하세요. 문자 클래스 내에서 일반 메타 문자를 이스케이프하면 정규식이 제대로 작동하지만 가독성이 크게 떨어집니다.

문자 클래스 내에 특별한 의미가없는 문자로 백 슬래시를 포함하려면 다른 백 슬래시로 이스케이프해야합니다. [\\ x]는 백 슬래시 또는 x와 일치합니다. 닫는 대괄호 (]), 캐럿 (^) 및 하이픈 (-)은 백 슬래시로 이스케이프하거나 특수한 의미를 갖지 않는 위치에 배치하여 포함 할 수 있습니다. 가독성을 높이기 때문에 후자의 방법을 권장합니다. 캐럿을 포함하려면 여는 괄호 바로 뒤를 제외하고 아무 곳에 나 배치하십시오. [x ^]는 x 또는 캐럿과 일치합니다. 여는 대괄호 또는 부정 캐럿 바로 뒤에 닫는 대괄호를 놓을 수 있습니다. [] x]는 닫는 대괄호 또는 x와 일치합니다. [^] x]는 닫는 대괄호 나 x가 아닌 모든 문자와 일치합니다. 하이픈은 여는 대괄호 바로 뒤, 닫는 대괄호 바로 앞 또는 부정 캐럿 바로 뒤에 포함될 수 있습니다.

정규식을 작성하는 언어는 무엇입니까?


답변

이 솔루션은 br 태그를 ‘\ n’으로 바꾸는 동안 내 문제를 해결했습니다.

alert(content.replace(/<br\/\>/g,'\n'));