developer tip

변수에서 Javascript Regexp 동적 생성?

optionbox 2020. 8. 16. 20:12
반응형

변수에서 Javascript Regexp 동적 생성? [복제]


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

두 개의 정규식 패턴을 하나로 구성하는 방법은 무엇입니까?

예를 들어 긴 패턴 하나와 작은 패턴 하나가 있으면 긴 패턴 앞에 작은 패턴을 넣어야합니다.

var pattern1 = ':\(|:=\(|:-\(';
var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('
str.match('/'+pattern1+'|'+pattern2+'/gi');

이것은 작동하지 않습니다. 문자열을 연결하면 모든 슬래시가 사라집니다.


다음을 사용해야합니다 RegExp.

str.match(new RegExp(pattern1+'|'+pattern2, 'gi'));

문자열을 연결하면 모든 슬래시가 사라집니다.

특수 정규식 문자 (예 :)를 이스케이프하기 위해 패턴에 백 슬래시가있는 경우 문자열에 두 개의 백 슬래시 \(를 사용해야 합니다 (문자열 의 이스케이프 문자 이기 때문에 ) : .\new RegExp('\\(')/\(/

따라서 패턴은 다음과 같아야합니다.

var pattern1 = ':\\(|:=\\(|:-\\(';
var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';

아래를 사용하십시오.

var regEx = new RegExp(pattern1+'|'+pattern2, 'gi');

str.match(regEx);

정규식 리터럴을 무시하고 개체 생성자를 사용해야합니다. 여기서 정규식을 문자열로 전달할 수 있습니다.

var regex = new RegExp(pattern1+'|'+pattern2, 'gi');
str.match(regex);

RegExp 생성자는 텍스트를 패턴과 일치시키기위한 정규식 개체를 만듭니다.

    var pattern1 = ':\\(|:=\\(|:-\\(';
    var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';
    var regex = new RegExp(pattern1 + '|' + pattern2, 'gi');
    str.match(regex);

위의 코드는 저에게 완벽하게 작동합니다 ...

참고 URL : https://stackoverflow.com/questions/5090103/javascript-regexp-dynamic-generation-from-variables

반응형