2017-03-01 8 views
0

Javascriptは、正規表現内のlookbehindをサポートしていません。次のPHP正規表現をJavascriptに変換するにはどうすればよいですか?ここでlookbindを使ってPHP正規表現をJavascriptに変換するにはどうすればよいですか?

regPattern="(?<!\\)\\x" 

は(Node.jsの中に)テストケースである:

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一致しません。

+1

あなたの 'str'は' String'ではありません。 –

+0

right、corrected – androidkc

+0

あなたの文字列は '{" key ":" abc \ x123 xxz "}'ですので、 '.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です。

関連する問題