Javascript正则表达式帮助

时间:2011-08-13 14:54:50

标签: javascript regex string escaping

我在JavaScript中有以下字符串

  var mystring = " abcdef(p,q); check(x,y); cef(m,n);"

我想做一个字符串替换,以便我的最终字符串是:

  mystring = " abcdef(p,q); someothercheck\(x,y\); cef(m,n);"

替换后x和y应保持相同。并且反斜杠是必要的,因为我需要将它们传递给其他命令。

字符串中还可以有其他Parantheses。

2 个答案:

答案 0 :(得分:4)

如果你没有其他括号,那应该很容易。

mystring = mystring.replace("check(", "someothercheck\\(");
mystring = mystring.replace(")", "\\)");

编辑这也适用于多个括号(它不影响空的括号)。     var str =“abcdef; check(x,y); cef();”         patt = /((\ w)/ g;

// transform (x in \(x
str = str.replace(patt, '\\($1');

patt = /(\w)\)/g

// transform y) in y\);
str = str.replace(patt,  '$1\\)');

// transform check in someothercheck
str = str.replace('check', 'someothercheck');

编辑现在只转换支票字符串。

function convertCheck(str, check, someOtherCheck) {
   // console.log(str + " contains " + check + "? ");
   // console.log(str.indexOf(check));

   if (str.indexOf(check) === -1) return str;
   var patt1 = /\((\w)/g,
   patt2 = /(\w)\)/g; 

   str = str.replace(patt1, '\\($1');
   str = str.replace(patt2,  '$1\\)');
   str = str.replace(check, someOtherCheck);

   return str;
}

var str = "abcdef(); check(x,y); cef();",
    tokens = str.split(';');
for (var i = 0; i < tokens.length; i++) {
   tokens[i] = convertCheck(tokens[i], "check", "someothercheck");
}
str = tokens.join(";");

alert(str);  // "abcdef(); someothercheck/(x,y/); cef();"

答案 1 :(得分:2)

var myString = "abcdef; check(x,y); cef;";

myString.replace(/(\w+)\(/, 'someother$1(')
        .replace(/\(/g, '\\(')
        .replace(/\)/g, '\\)')