我的字符串包含一些需要用(\)在字符串前双反斜线进行转义的特殊字符。 我的一段代码如下:
var data = "abckdef)ghijkl)-8-mno-3-(pqrstuvw-1-xyz)-5-thiaa-1-aza-";
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_";
for (var i = 0; i < data.length; i++) {
if (iChars.indexOf(data.charAt(i)) != -1) {
console.log("Your string has special characters. \nThese are not allowed.");
return false;
}
}
预期结果将是:
abckdef\)ghijkl\)\-8\-mno\-3\-\(pqrstuvw\-1\-xyz\)\-5\-thiaa\-1\-aza\-
上面的代码中发现的特殊字符在我的字符串,但我想(\\)的特殊字符的每一个发生前添加。 任何帮助?
使用正则表达式替换:
比赛:
/[!@#$%^&*()+=\-[\]\\';,./{}|":<>?~_]/
替换为:
\$&
>>> data.replace(/[!@#$%^&*()+=\-[\]\\';,./{}|":<>?~_]/g, "\\$&")
... "abckdef\)ghijkl\)\-8\-mno\-3\-\(pqrstuvw\-1\-xyz\)\-5\-thiaa\-1\-aza\-"
正则表达式:
([!@#$%^&*()+=\[\]\\';,./{}|":<>?~_-])
替换字符串:
\$1
DEMO
> var data = "abckdef)ghijkl)-8-mno-3-(pqrstuvw-1-xyz)-5-thiaa-1-aza-";
undefined
> var result = data.replace(/([!@#$%^&*()+=\[\]\\';,./{}|":<>?~_-])/g, "\\$1");
undefined
> console.log(result);
abckdef\)ghijkl\)\-8\-mno\-3\-\(pqrstuvw\-1\-xyz\)\-5\-thiaa\-1\-aza\-
试试这个即插即用功能。
var data = "abckdef)ghijkl)-8-mno-3-(pqrstuvw-1-xyz)-5-thiaa-1-aza-";
function escapeSpecialCaseChar(text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
}
的console.log(escapeSpecialCaseChar(数据));
你想逃避不是字母数字字符以外的任何使之更容易
查找内容: ([^a-zA-Z0-9])
的更换: \\$1
regex101演示
示例代码:
var re = /([^a-zA-Z0-9])/g;
var str = 'abckdef)ghijkl)-8-mno-3-(pqrstuvw-1-xyz)-5-thiaa-1-aza-';
var subst = '\\$1';
var result = str.replace(re, subst);
输出:(同预期)
abckdef\)ghijkl\)\-8\-mno\-3\-\(pqrstuvw\-1\-xyz\)\-5\-thiaa\-1\-aza\-
文章来源: javascript code to check special characters and add double slash before that?