我有一些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>