Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何转换混合拉丁和unicode字符的字符串_Javascript_Regex_Unicode - Fatal编程技术网

Javascript 如何转换混合拉丁和unicode字符的字符串

Javascript 如何转换混合拉丁和unicode字符的字符串,javascript,regex,unicode,Javascript,Regex,Unicode,我有许多字符串,它们由混合的拉丁语和unicode编码的西里尔语符号组成。 我需要的是一个javascript函数来将这些字符串转换为人类可读的形式。 以下是我的想法: var EGstr = 'Гриф Kettler прямой'; var newStr = EGstr.replace(/&a

我有许多字符串,它们由混合的拉丁语和unicode编码的西里尔语符号组成。 我需要的是一个javascript函数来将这些字符串转换为人类可读的形式。 以下是我的想法:

var EGstr = 'Гриф Kettler прямой';
var newStr = EGstr.replace(/&#(\d+);/g, String.fromCharCode('$1') );
应该很好,但不是。。。
请告诉我如何正确更改代码。

您可以为方法提供替换函数:

替换函数的第一个参数是匹配整个表达式的文本(我们不需要)

接下来的第二个参数将是捕获组捕获的任何内容

倒数第二个参数和最后一个参数将分别包含匹配和源字符串的偏移量(此处我们也不需要,因此我不在替换函数中声明它们)。

您可以使用:

var d = document.createElement('div');
d.innerHTML = 'Гриф Kettler прямой';
alert(d.innerHTML); //Гриф Kettler прямой
而不是正则表达式

或者如果我们把它放到一个函数中

function getText(txt) {
  var d = document.createElement('div');
  d.innerHTML = txt;
  return d.innerHTML;
}

这里假设您的字符串是可信的HTML转义文本内容。如果这些是用户提交的字符串,并且您将它们写入
innerHTML
,那么您会遇到跨站点脚本安全问题,因为这些字符串可能包含
和其他活动内容。OP:您从哪个来源获得的
EGstr
function getText(txt) {
  var d = document.createElement('div');
  d.innerHTML = txt;
  return d.innerHTML;
}