用于检查特殊字符的javascript代码并在此之前添加双斜杠?

时间:2014-08-19 06:09:33

标签: javascript regex special-characters

我的字符串包含一些特殊字符,需要在字符串之前使用(\)双反斜杠进行转义。我的代码如下:

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\-

上面的代码在我的字符串中找到特殊字符,但我想在每次出现特殊字符之前添加(\\)。对此有何帮助?

4 个答案:

答案 0 :(得分:4)

使用正则表达式替换:

匹配度:

/[!@#$%^&*()+=\-[\]\\';,./{}|":<>?~_]/

替换为:

\$&
>>> data.replace(/[!@#$%^&*()+=\-[\]\\';,./{}|":<>?~_]/g, "\\$&")
... "abckdef\)ghijkl\)\-8\-mno\-3\-\(pqrstuvw\-1\-xyz\)\-5\-thiaa\-1\-aza\-"

答案 1 :(得分:2)

正则表达式:

([!@#$%^&*()+=\[\]\\';,./{}|":<>?~_-])

替换字符串:

\$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\-

答案 2 :(得分:2)

试试这个即插即用功能。

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(数据));

答案 3 :(得分:1)

你想逃避除字母数字字符以外的任何事情,然后简单地

查找内容:([^a-zA-Z0-9]) 替换:\\$1

regex101 demo

示例代码:

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\-