Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在常规espression中的替换字符串中插入$_Javascript_Regex - Fatal编程技术网

Javascript 在常规espression中的替换字符串中插入$

Javascript 在常规espression中的替换字符串中插入$,javascript,regex,Javascript,Regex,有人知道为什么吗 "why?? <abc> and <a b c> and <a b>".replace( /<([^>]+)>/g, "\$$1" ); 代替 "why?? $abc and $a b c and $a b" 如果没有转义的$,结果与预期一致 "why?? <abc> and <a b c> and <a b>".replace( /<([^>]+)>/g, "$1

有人知道为什么吗

"why?? <abc> and <a b c> and <a b>".replace( /<([^>]+)>/g, "\$$1" ); 
代替

"why?? $abc and $a b c and $a b"
如果没有转义的$,结果与预期一致

"why?? <abc> and <a b c> and <a b>".replace( /<([^>]+)>/g, "$1" )
//"why?? abc and a b c and a b"
“为什么?”和“.replace(/]+)>/g,“$1”)
//“为什么??abc和AB c和AB”
我尝试了各种各样的黑客,包括

"why?? <abc> and <a b c> and <a b>".replace( /<([^>]+)>/g, String.fromCharCode( 36 ) + "$1" );
“为什么?”和“.replace(/]+)>/g,String.fromCharCode(36)+“$1”);
最后,我使用一个函数作为替换字符串(见下文)获得了我想要的输出,但我想知道我做错了什么。提前谢谢

"why?? <abc> and <a b c> and <a b>".replace( /<([^>]+)>/g, function(m,m1,m2,p){return '$' + m1; } )
替换(/]+)>/g,函数(m,m1,m2,p){返回'$'+m1;})
在JavaScript中,反斜杠只是从无法识别的转义序列中删除<代码>\$不是字符串文字中可识别的转义序列,因此:

"\$$1"
表示与此相同:

"$$1"
replace
replacement字符串中,
$$
表示“文字美元符号”

你想要的是:

"$$$1"
其中
$
变为
$
$1
变为例如
abc


(换句话说:在
replace
replacement字符串中“转义”美元符号的方法是将其加倍,而不是在其前面加反斜杠。)

这是grat,谢谢。它仍然不能解释为什么“为什么”和“.replace(/]+)>/g,String.fromCharCode(36)+“$1”)不起作用,但对我来说已经足够了,谢谢:-)@fritzfromlondon:
字符串。fromCharCode(36)
“$”
,所以
字符串。fromCharCode(36)+“$1”
“$$1”
,在
替换字符串中,它表示“一个大写的美元符号,后跟一个数字”。
"$$$1"