Jquery - 正则表达式改变文本中Unicode字符的颜色?

时间:2014-11-20 22:26:13

标签: jquery regex unicode

我们有......简单的版本...... 在实时版本中,“this”是两个jQuery中的每个循环,因为我们正在搜索多个unicode字符的多个分区......

 <p id="searchDiv1">Root Juice&#8482;</p>

我们希望将“™”的颜色更改为红色.. 所以我们有这个...

var char = '&#8482;';
var thisDiv = '#searchDiv1';

var replaceWithThis = '<span color="red">'+char+'</span>';
var newText = $(thisDiv).html().replace( /[char]/g, replaceWithThis);
$( thisDiv ).html(newText);

不幸的是......结果看起来像这样..

Root Jui™e™

显然......我们需要更好的正则表达式...或者其他...... 有人有任何线索吗? 感谢...

1 个答案:

答案 0 :(得分:1)

代码有几个问题。这是一个最低限度修改的版本:

var char = '\u2122';
var thisDiv = '#searchDiv1';
var replaceWithThis = '<font color="red">'+char+'</font>';
var newText = $(thisDiv).html().replace(new RegExp(char, 'g'), replaceWithThis);
$( thisDiv ).html(newText);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="searchDiv1">Root Juice&#8482;</p>

首先,您不能在JavaScript中使用&#8482;,除非您将JavaScript解析为HTML。请改用JavaScript字符转义\u2122。这里2122是十进制8482的十六进制形式。

其次,当你在正则表达式中使用[char]时,它是按字面意思理解的:它匹配任何字符c,h,a,r。这里没有变量替换。使用RegExp构造函数从变量值构建正则表达式。

第三,span元素没有color属性。请改用font元素。 (虽然许多人对它皱眉并诅咒它,但它的工作正常。)或者,使用例如具有span属性的class元素,并使用该类定义CSS规则。或者使用内联CSS <span style="color: red">