2014-10-14 5 views
2

과 같은 것이 곱셈과 같은 간단한 산술 연산을 통합하고 RegExp object으로 평가되는 정규 표현식에 추가 되었습니까?Javascript의 RegExp에 대한/e 수정 자

자바 스크립트 코드를 전송하고 평가하는 것보다 더 안전하고 문자열의 연결, 곱셈 및 나눗셈을 포함 할 수있는 URL 생성을위한 패턴을 전송하려고합니다.

+0

아니요 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Parameters –

+0

정규식 대신 패턴의 다른 종류가있을 수 있습니다 (거의) 제한된 작업? –

+0

당신이하려고하는 것은 전형적인 Perl's /// e' 구조가 필요하다는 것입니까? 전후에 예를 보여줄 수 있습니까? 동적으로 정규 표현식을 생성하거나 정규 표현식을 수정하고 있습니까? – sln

답변

7

원하는 것은 .replace()에 콜백 함수를 전달하면됩니다. 예를 들어, 펄


:

my $result = '1 foo 2 bar 3' =~ s/\d+/ $& * 2 /erg; 

그리고 자바 스크립트에서 :

var result = '1 foo 2 bar 3'.replace(/\d+/g, function(match) { 
    return match * 2; 
}); 

result s는 동일합니다 :

2 foo 4 bar 6 

,

.replace()의 전체 설명서를 읽으면 필요한 경우 캡처 된 그룹을 포함하여 콜백 함수에 전달할 수있는 추가 매개 변수가 표시됩니다.

+0

그건 해결책이 아니며 질문에 대답하지 않습니다. 나는 산술 식을 전달해야하며 자바 스크립트를 보내는 것보다 더 안전한 방법을 찾고 있습니다 - 불안한 소스에서 자바 스크립트를 실행하는 것은 큰 보안 구멍이 될 것입니다. –

+6

@Ted Barth, 이것은 해결책이며 질문에 대답합니다. 이것은'/ e'와 완전히 똑같습니다. Perl을 입력하는 것보다 조금 더 짧습니다. – ikegami

+1

다음 번에 같은 문장에 모든 부작용을 포함하도록 500 단어 길이의 질문을 작성합니다. 원하는대로 해석되는 질문을 쓰는 것은 어렵습니다. 체크 표시는 당신에게 간다! :디 –