JavaScript正则表达式取代HTML编码
我有以下JS代码,我想替换我所有的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中编码的字符进行编码,以确保可以解析生成的
₪代码>(₪)带有$
符号
$(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转义序列(请参阅我的更新答案)。