2013-03-15 5 views
0

javascript RegExp 동작에 대한 몇 가지 이해 문제가 있습니다. 이 물건이 어떻게 작동하는지 알려주세요.설명해주세요. RegExp javascript 동작

var str = "_prefix_123 blah blah _prefix_321 blah blah blah _prefix_100500"; 
var prefix = "_prefix_"; 
var exp = new RegExp (prefix+"\d*","gm"); 

str1 = str.replace(exp,"hello"); 
alert(str1); 

str2 = str.replace(/_prefix_\d*/gm, "hello"); 
alert(str2); 

체크 여기 http://jsfiddle.net/6PSdg/4/

동일 어떤 이유로 두 가지를 들어 바이올린은 정규식 패턴이 서로 다른 결과를 반환 (적어도 그들처럼 보인다). 아무도 무슨 일이 일어나고 있는지 설명 할 수 있습니까?))

고맙습니다!

답변

2

다른 점은 RegExp 생성자를 사용할 때, 당신은 문자열 전달하고, 문자열 리터럴에서 백 슬래시가 문자열 탈출로 해석됩니다 것입니다. 실제로 정규식 엔진에 백 슬래시를 전달 그래서, 당신은 (그것의 앞에 백 슬래시를 넣어) 문자열에서 백 슬래시 이스케이프되어 있는지 확인해야합니다 :

var exp = new RegExp (prefix+"\\d*","gm"); 
// Here ----------------------^ 

Updated Fiddle

+0

당신은 내 주말에 저장!^_^ – LoomyBear

+0

@LoomyBear : 도움이 된 것을 기쁘게 생각합니다! :-) –