У меня есть некоторый javascript, который читает некоторые файлы cookie и выполняет некоторые сопоставления. Я использую группировки, чтобы поймать части регулярного выражения и использовать их позже. У меня проблема с символами Юникода, хотя. Если у меня есть такой символ, как \ u25BA ►, когда я нахожу этот символ в группе, он возвращает строку «\ u25BA» вместо искомого символа Юникод. Если я укажу персонажа, я смогу решить проблему, но я не смогу заставить его работать более широко.
Следующее будет работать так, как я хочу:
var matches=theOnclick.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/);
var expand=matches[1].replace(/\\u25BA/, '\u25BA');
но это не будет работать:
var expand=matches[1].replace(/\\u([0-9A-Z])/, '\u\1');
есть предложения?
Дополнительная информация:
Спасибо за ваши ответы. Позвольте мне добавить немного больше фона. Я думаю, что проблема в том, что я получаю свои спички от «щелчка» на промежутке. Я включил чуть более подробный пример ниже. Если у меня есть нормальная строка с символами Юникода, то при сопоставлении я получаю символы Юникода. Однако, когда я получаю строку из значения onclick, я получаю escape-последовательности Юникода вместо этого. Поэтому я пытался преобразовать escape-последовательности Юникода обратно в символы Юникода. Я надеюсь, что в этом есть смысл. Возможно, есть другой способ сделать это.
В приведенном ниже примере 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>