Справка по регулярным выражениям Javascript - PullRequest
0 голосов
/ 13 августа 2011

У меня есть следующая строка в JavaScript

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

Я бы хотел заменить строку так, чтобы моя последняя строка:

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

x и y должны оставаться такими же после замены. и обратная косая черта необходима, поскольку мне нужно передать их какой-то другой команде.

В строке могут быть и другие парантезы.

Ответы [ 2 ]

4 голосов
/ 13 августа 2011

Если у вас нет других скобок, это должно быть легко.

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

РЕДАКТИРОВАТЬ Это работает также в случае нескольких круглых скобок (это не влияет на пустые скобки). var str = "abcdef; check (x, y); cef ();" патт = / ((\ ш) / г;

// 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();"
2 голосов
/ 13 августа 2011
var myString = "abcdef; check(x,y); cef;";

myString.replace(/(\w+)\(/, 'someother$1(')
        .replace(/\(/g, '\\(')
        .replace(/\)/g, '\\)')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...