Nice programing

정규식 자바 스크립트에서 물음표 이스케이프

nicepro 2020. 10. 18. 19:35
반응형

정규식 자바 스크립트에서 물음표 이스케이프


이것은 제 생각에 간단한 질문입니다.

다음과 같이 JavaScript에서 정규식을 사용하여 다른 문자열에서 문자열의 발생을 검색하려고합니다.

 var content ="Hi, I like your Apartment. Could we schedule a viewing? My phone number is: ";

 var gent = new RegExp("I like your Apartment. Could we schedule a viewing? My", "g");

 if(content.search(gent) != -1){   
     alert('worked');     
 }          

이것은 ?캐릭터 때문에 작동하지 않습니다 .... 나는 그것을 이스케이프하려고 시도했지만 그것도 \작동하지 않습니다. ?특수 문자 대신 문자 그대로 사용하는 다른 방법이 있습니까?


두 개의 백 슬래시로 이스케이프해야합니다.

\\?

자세한 내용은 다음을 참조하십시오.

http://www.trans4mind.com/personal_development/JavaScript/Regular%20Expressions%20Simple%20Usage.htm


이중 슬래시를 사용해야합니다.

var regex = new RegExp("\\?", "g");

왜? JavaScript에서는 \문자열에서 문자를 이스케이프하는데도 사용되므로 "\?" 된다 :"?"

그리고 "\\?",이된다"\?"


따옴표 대신 슬래시로 정규 표현식을 구분 한 다음 물음표를 이스케이프하기 위해 단일 백 슬래시로 구분할 수 있습니다. 이 시도:

var gent = /I like your Apartment. Could we schedule a viewing\?/g;

알려진 패턴 이있을 때마다 (즉, RegExp를 빌드하는 데 변수를 사용하지 않음) 특수 정규식 메타 문자를 이스케이프 하기 위해 단일 백 슬래시 만 사용하면되는 리터럴 정규식 표기법을 사용합니다 .

var re = /I like your Apartment\. Could we schedule a viewing\?/g;
                               ^^                            ^^

RegExp를 동적으로 빌드해야 할 때마다 리터럴 백 슬래시를 나타 내기 위해 이중 백 슬래시를 사용해야 하는 RegExp생성자 표기법 을 사용하십시오 .

var questionmark_block = "\\?"; // A literal ?
var initial_subpattern = "I like your Apartment\\. Could we schedule a viewing"; // Note the dot must also be escaped to match a literal dot
var re = new RegExp(initial_subpattern + questionmark_block, "g");

반드시 읽어야 할 것 : RegExp : Description at MDN.

참고 URL : https://stackoverflow.com/questions/889957/escaping-question-mark-in-regex-javascript

반응형