我有一些javascript读取一些cookie,并做一些匹配。我使用分组捕捉正则表达式的一部分,并在以后使用它们。不过,我有一个unicode字符的问题。如果我有一个像\ u25BA}这样的字符,当我在一个分组中找到这个字符时,它将返回字符串'\ u25BA'而不是我正在寻找的unicode字符。如果我指定角色,我可以解决这个问题,但是我无法让它更普遍地工作。 下面的工作,因为我希望它:Javascript匹配,并用unicode替换
var matches=theOnclick.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/);
var expand=matches[1].replace(/\\u25BA/, '\u25BA');
,但是这是行不通的:
var expand=matches[1].replace(/\\u([0-9A-Z])/, '\u\1');
有什么建议?
更多信息: 感谢您的回答。让我添加更多的背景。我认为问题在于我从一个跨度的“onclick”获得我的比赛。我在下面列出了一个稍微更详细的例子。如果我有一个包含unicode字符的正常字符串,那么当我进行匹配时,就会得到unicode字符。但是,当我从onclick的值中获取字符串时,我得到了unicode转义序列。所以我一直试图将unicode转义序列转换回unicode字符。我希望这是有道理的。也许还有另一种方式来做到这一点。
在下面的示例中,bar的行为与我想要的相同,而foo则不行。
<html>
<body>
<span id='foo' onclick='expandCollapse(event, "►", "▼");'>foo</span>
<script type='text/javascript'>
var foo= document.getElementById('foo').onclick+'';
alert(foo);
var foomatches=foo.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/);
alert(foomatches);
var bar='expandCollapse(event, "►", "▼");'
var barmatches=bar.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/);
alert(barmatches);
</script>
</body>
</html>