Javascript匹配并替换为unicode

时间:2009-05-27 04:02:26

标签: javascript regex unicode

我有一些javascript读取一些cookie,并进行一些匹配。我正在使用分组来捕获正则表达式的一部分并在以后使用它们。我遇到了unicode角色的问题。如果我有一个像\u25BA►这样的字符,当我在分组中找到这个字符时,它会返回字符串'\ u25BA'而不是我正在寻找的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>

2 个答案:

答案 0 :(得分:3)

我认为你的\ 1错了。应该是这样的:

"\u2603".replace(/(.)/, "$1"))

$ 1是替换文本中的反向引用。

但我不完全确定你要做什么。请记住\ u只能与unicode 文字一起使用。所以正则表达式中的\ u匹配文字\然后是文字u。替换文本中的\ u是你。

答案 1 :(得分:1)

怎么样

var expand=matches[1].replace(/\\u([0-9A-Z])/, '\1');

?我认为您不需要转义\u