2009-11-08 3 views
25

jQuery/Javascript의 정규식에 변수를 전달하는 방법이 있습니까?jQuery/Javascript의 정규식에 변수를 전달하는 방법

some_string.match(/#{variable_regex}/)

가 발견 유용한 게시물을 :

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(/variable_regex/); 

루비에서 당신이 할 수있을 것입니다 :

내가 좋아하는 뭔가를 할 싶어

How can I concatenate regex literals in JavaScript?

+0

복제를 (https://stackoverflow.com/questions/494035/how- do-you-a-variable-in-a-regular-expression) –

답변

17

그것은 쉽게 :

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(variable_regex); 

는 그냥 //을 잃게 - 루비 같은 ATION 당신은 RegExp 생성자를 사용해야합니다. 복잡한 정규 표현식에 사용하려는 경우, 당신은 문자열 연결을 사용할 수 있습니다 : [? 정규 표현식에서 변수를 어떻게 사용합니까]의

var variable_regex = "b."; 
var some_string = "foobar"; 

alert (some_string.match("f.*"+variable_regex)); 
+1

복잡한 정규 표현식을 사용하여 변수 패턴을 하드 코드 된 표현식으로 삽입하려고했지만 전체 정규식을 각 변수에 설정했습니다. –

+2

이 버전에서 regex 옵션을 적용 할 수 있다고 생각하지 않습니다 (대소 문자를 구분하지 않아야 함). 나는 @ Jonathan의 대답이 이것보다 더 적절하다고 말하고 싶다. – nzifnab

+0

또한 일치하는 항목에서만 작동합니다. replace와 같은 다른 호출은 정규 표현식을 명시 적으로 생성해야합니다. – bronson

44

자바 스크립트 보간을 지원하지 않는다.

var aString = "foobar"; 
var pattern = "bar"; 

var matches = aString.match(new RegExp(pattern)); 
+6

regex 옵션을 적용하려는 경우 다음과 같이 할 수 있습니다 : 대문자와 소문자를 구별하지 않는 새로운 Regex (패턴, 'gi'). – Mike

+0

@Mike의 의견을 수정해야합니다. ** Regex **뿐만 아니라 새로운 RegExp (pattern [, flags]) 여야합니다. –

+1

ES2015는 템플릿 문자열에서 표현식 보간을 지원합니다. –

관련 문제