【发布时间】:2017-04-20 10:27:56
【问题描述】:
我正在尝试使用十六进制正则表达式模式来识别字符串中的十六进制值并将其替换为某个固定值。但它既没有用测试功能来识别它,也没有取代它。根据我的需要,正则表达式模式似乎没问题。请指教。
function test_replace() {
var str = '22:03705081:Xx1aB5c';
var patrn = /[\x00-\x1f\x22\x5c]/g;
if (patrn.test(str))
return str.replace(patrn, 'hexa')
else
return str
}
test_replace();
【问题讨论】:
-
请发布输入和期望输出的样本
-
您的正则表达式仅匹配 ASCII 控制字符
"和\。您的字符串不包含它们。 -
将结果分配回
str。 -
@Wiktor Stribiżew 模式“[\x00-\x1f]”的一部分将不匹配 00 到 1f 范围 31 十六进制值范围以及任何字符串中存在的“22”和 5c 十六进制值跨度>
-
是的,但是您的输入字符串没有这样的字符。见this demo。你甚至不需要
.test()部分,如果没有找到匹配,.replace()返回相同的字符串。
标签: javascript regex