2017-03-01 7 views
0

자바 스크립트는 regexes의 lookbehind를 지원하지 않습니다. 다음 PHP 정규 표현식을 Javascript로 변환하려면 어떻게해야합니까? lookbehind가있는 PHP 정규식을 Javascript로 변환하려면 어떻게해야합니까?

var str = '{"key":"abc \\x123 \xe2\x80\x93 xyz"}' 
var newStr = str.replace(/regPattern/g, '\\u') 
console.log(newStr); // output: '{"key":"abc \\x123 \ue2\u80\u93 xyz"}' 

\\x123

그것이 \\x 포함되어 있기 때문에 일치하지만, \x 일치하지 않습니다 여기에
regPattern="(?<!\\)\\x" 

은 (Node.js를에서) 테스트 케이스이다.

+1

'str'은 (는) 문자열이 아닙니다. –

+0

right, corrected – androidkc

+0

자, 여러분의 문자열은'{ "key": "abc \ x123 â xyz"}'이므로'.replace (/ \\ x/g, '// u')' "key": "abc // u123 â xyz"}'. 올바른 * 문자열 리터럴을 게시 했습니까? –

답변

1

이 시도 : 즉

var newStr = str.replace(/([^\\]|^)\\x/g, '$1\\u'); 

, \x 다음에 ^ (문자열의 시작) 또는 비 \ 문자를 일치 캡처 그룹의 첫 번째 문자를 캡처 1.

그런 다음 전체 3 자 일치 그룹을 캡처 그룹 1로 바꾼 다음 \u을 입력하십시오.

예를 들어 abc?\x에서 문자열 ?\x이 일치하고 캡처 그룹 1은 ?이됩니다. 따라서 일치 항목 (?\x)을 $1\u으로 바꿔 ?\u으로 평가합니다. 따라서 abc?\x ->abc?\u.