我正在尝试使用十六进制正则表达式模式来识别字符串中的十六进制值并将其替换为某个固定值。但它既没有将其与测试函数识别,也没有取代它。正则表达式模式似乎可以满足我的需要。请指教。
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();
最佳答案
您的 [\x00-\x1f\x22\x5c]
regex将 ASCII 字符与来自 00
的十六进制代码进行匹配直到1F
(控制字符)以及 22
和5C
字符(分别为 "
和 \
)。
如果您打算匹配字符串,例如 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, a
, b
, c
, d
, e
, f
, 10
, 11
, 12
, 13
, 14
, 15
, 16
, 17
, 18
, 19
, 1a
, 1b
, 1c
, 1d
, 1e
,1f
, 22
, 5c
使用
/22|5c|1?[0-9a-f]/gi
请参阅regex demo .
详细信息:
-
22
-22
-
|
- 或 -
5c
-5c
-
|
- 或 -
1?[0-9a-f]
- 可选(1或0次)1
后跟a
中的任何数字或字母直到f
.
function test_replace(str) {
var patrn = /22|5c|1?[0-9a-f]/gi;
return str.replace(patrn, 'hex');
}
console.log(test_replace('22:03705081:Xx1aB5c'));
关于javascript - 通过JS测试函数进行十六进制搜索并用一些值替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43516938/