Javascript Unicode 转换和搜索

标签 javascript regex unicode escaping character-codes

我想知道是否有人对将字符代码数组转换为 Unicode 字符并使用正则表达式搜索它们有任何见解。

如果你有

var a = [0,1,2,3]

您可以使用循环将它们转换为 unicode 中前四个控制字符的字符串。

但是,如果您想创建正则表达式

"(X)+"

其中 X == 字符代码 3 转换为其 Unicode 等效项,搜索似乎永远不起作用。如果我检查字符串的长度,它是正确的,并且 .* 返回字符串中的所有字符。但是当我必须从字符代码开始时,我在构建正则表达式来搜索字符串时遇到了困难。有什么建议吗?

编辑:

var a = [0,1,2,3,0x111]; str = "";

for(var i = 0; i < a.length; i++) {
    str += String.fromCharCode(a[i]);
}

var r = [0x111]
var reg = ""

reg += "(";
for(var i = 0; i < r.length; i++) {
var hex = r[i].toString(16);
    reg += "\\x" + hex;
}
reg += ")";

var res = str.match(RegExp(reg))[0];

编辑

//Working code:
var a = [0,1,2,3,0x111];
str = "";

for(var i = 0; i < a.length; i++) {
    str += String.fromCharCode(a[i]);
}

var r = [3,0x111]
var reg = ""

reg += "(";
for(var i = 0; i < r.length; i++) {
    var hex = r[i].toString(16);
    reg += ((hex.length > 2) ? "\\u" : "\\x") + ("0000" + hex).slice((hex.length > 2) ? -4 : -2);
}
reg += ")";

var res = str.match(RegExp(reg))[0];

最佳答案

通过更改一些细节,该示例就可以运行。

假设您对一般的可打印 Unicode 字符感兴趣,而不是专门对前四个控制字符感兴趣,则字符串“hello”的测试向量 a 将为:

var a = [104, 101, 108, 108, 111]; // hello

如果您想匹配两个“l”字符:

var r = [108, 108]

构建正则表达式时,字符代码必须为十六进制:

reg += "\\x" + ("0" + r[i].toString(16)).slice(-2);

之后,您应该会看到预期的结果。

关于Javascript Unicode 转换和搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23588207/

相关文章:

mysql - 如何处理 MySQL `WHERE` 子句中的变音符号?

javascript - 将 onclick 事件设置为自定义函数会导致语法错误

php - 将文本拆分成句子

javascript - 当到达数据对象末尾时停止迭代

java正则表达式匹配任何整数或 double 然后替换非数字/小数字符

java - 无法让我的正则表达式正常工作

javascript - 使用 Firefox 扩展从网站保存文本,保存了错误的字符

java - jsp - 使用 unicode(希伯来字母)发布请求未正确显示

javascript - 如何在 JavaScript 中使用此函数中的 '^'?

javascript - 类型 'transformArticles' 上不存在属性 'typeof Article'