Programing

자바 스크립트를 사용하여 정규 표현식 특수 문자를 이스케이프 처리하는 방법은 무엇입니까?

crosscheck 2020. 6. 14. 10:32
반응형

자바 스크립트를 사용하여 정규 표현식 특수 문자를 이스케이프 처리하는 방법은 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

java 스크립트를 사용하여 정규 표현식 특수 문자를 이스케이프 처리해야합니다. 어떻게 달성 할 수 있습니까? 도움이 필요합니다.


빠른 답변 주셔서 감사합니다. 그러나 정규 표현식의 모든 특수 문자를 이스케이프해야합니다.이 코드로 시도했지만 결과를 얻을 수 없습니다.

RegExp.escape=function(str)
            {
                if (!arguments.callee.sRE) {
                    var specials = [
                        '/', '.', '*', '+', '?', '|',
                        '(', ')', '[', ']', '{', '}', '\\'
                    ];
                    arguments.callee.sRE = new RegExp(
                    '(\\' + specials.join('|\\') + ')', 'gim'
                );
                }
                return str.replace(arguments.callee.sRE, '\\$1');

            }

function regExpFind() {
            <%--var regex = new RegExp("\\[munees\\]","gim");--%>
                    var regex= new RegExp(RegExp.escape("[Munees]waran"));
                    <%--var regex=RegExp.escape`enter code here`("[Munees]waran");--%>
                    alert("Reg : "+regex);
                }

이 코드의 문제점은 무엇입니까?


\정규식 내에서 특별한 의미가 있는 문자를 피 하려면 문자를 사용하십시오 .

자동화하려면 다음을 사용할 수 있습니다.

function escapeRegExp(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
}

업데이트 : 이제 ES2016 에서이 방법을 표준화 할 제안이 있습니다 : https://github.com/benjamingr/RegExp.escape

업데이트 : 위에서 언급 한 제안이 거부되었으므로 필요한 경우 직접 구현하십시오.


문자를 이스케이프하려면 백 슬래시를 사용하십시오. 예를 들면 다음과 같습니다.

/\\d/

숫자 대신 \ d와 일치합니다.


함께 \사용하면 특수 문자를 탈출

특수 문자를 리터럴로, 리터럴 문자를 특수로 이스케이프합니다.

예 : / (s) /는 '(s)'와 일치하고 / (\ s) /는 공백과 일치하고 일치를 캡처합니다.

출처 : http://www.javascriptkit.com/javatutors/redev2.shtml

참고 URL : https://stackoverflow.com/questions/3115150/how-to-escape-regular-expression-special-characters-using-javascript

반응형