Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

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正则表达式取代HTML编码_Javascript_Regex_Replace_Html Encode - Fatal编程技术网

JavaScript正则表达式取代HTML编码

JavaScript正则表达式取代HTML编码,javascript,regex,replace,html-encode,Javascript,Regex,Replace,Html Encode,我有以下JS代码,我想替换我所有的₪(₪)带有$符号 $(this).html($(this).html().replace(/₪/g,'$')); 但是它什么也没做。我还尝试转义特殊字符(因为我不知道到底哪些需要,哪些不需要),但这也不起作用。当您访问innerHTML(或jQuery的HTML())时,浏览器将HTML重新创建为DOM的表示形式。这意味着只有在必要时才能在innerHTML的输出中对可能已在原始HTML中编码的字符进行编码,以确保可以解析生成的

我有以下JS代码,我想替换我所有的
(₪)带有
$
符号

$(this).html($(this).html().replace(/₪/g,'$'));

但是它什么也没做。我还尝试转义特殊字符(因为我不知道到底哪些需要,哪些不需要),但这也不起作用。

当您访问
innerHTML
(或jQuery的
HTML()
)时,浏览器将HTML重新创建为DOM的表示形式。这意味着只有在必要时才能在
innerHTML
的输出中对可能已在原始HTML中编码的字符进行编码,以确保可以解析生成的HTML。由于₪不是HTML结构的语法部分,因此不会对其进行编码

tl;dr,替换文字字符:

.replace(/₪/g,'$')
或者,如果您不确定文件的编码,请使用Unicode转义序列:

.replace(/\u20AA/g,'$')

当您访问
innerHTML
(或jQuery的
HTML()
)时,浏览器会将HTML重新创建为DOM的表示形式。这意味着只有在必要时才能在
innerHTML
的输出中对可能已在原始HTML中编码的字符进行编码,以确保可以解析生成的HTML。由于₪不是HTML结构的语法部分,因此不会对其进行编码

tl;dr,替换文字字符:

.replace(/₪/g,'$')
或者,如果您不确定文件的编码,请使用Unicode转义序列:

.replace(/\u20AA/g,'$')

要在unicode十六进制字符代码上匹配的正则表达式语法为:

\uhhhh
其中h代表四位十六进制代码,因此:

$(this).html($(this).html().replace(/\u8362;/g,'$'));

// OR if that number was a decimal number, in hex you'd have:
$(this).html($(this).html().replace(/\u20AA;/g,'$'));

要在unicode十六进制字符代码上匹配的正则表达式语法为:

\uhhhh
其中h代表四位十六进制代码,因此:

$(this).html($(this).html().replace(/\u8362;/g,'$'));

// OR if that number was a decimal number, in hex you'd have:
$(this).html($(this).html().replace(/\u20AA;/g,'$'));

这不会导致不同IDE出现问题吗?也许不是所有人都支持这个角色?例如,我的Zend Studio在用这个角色保存脚本时给了我一个错误,但是它给了我保存为UTF-8的选项,并且它工作了。谢谢。@EduardLuca:是的,文件的编码在这里起作用。如果这是一个问题,请使用Unicode转义序列(请参阅我更新的答案)。这不会导致不同IDE出现问题吗?也许不是所有人都支持这个角色?例如,我的Zend Studio在用这个角色保存脚本时给了我一个错误,但是它给了我保存为UTF-8的选项,并且它工作了。谢谢。@EduardLuca:是的,文件的编码在这里起作用。如果这是一个问题,请使用Unicode转义序列(请参阅我的更新答案)。