2011-08-13 15 views
0

I持ってJavaScriptで以下の文字列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もあります。

+3

なぜ正規表現だけの "チェック" 文字列置き換え"someothercheck"と "with"と "\\(" and ")" \\) "を使用しています –

+1

のようにmystring.replace( 'check'、 'somothercheck')。replace( '('、 '\\) ( ').replace(') '、' \\\) '); http://jsfiddle.net/ytnRx/ – stecb

+0

3つの正規表現は1つ以上です –

答えて

4

他のかっこがない場合は、簡単にする必要があります。

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

EDITこれは、複数の括弧の場合にも動作します(これは空のものに影響を与えません)。 var str = "abcdef; check(x、y); cef();" PATT = /((\ W)/グラム;?

// 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'); 

EDIT今では唯一のチェック文字列を変換し

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();" 
+0

彼を文字通り服用しないでください。 'someothercheck'を例として考えてみましょう –

+0

私は質問を編集しました。文字列には他の括弧もあります。 – rightskewed

+0

@Pablo、彼(@ user278064)を文字どおり取り込まないでください。答えを例として考えてみましょう。 – aalku

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

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

私は質問を編集しました。文字列には他の括弧もあることを考慮する必要があります。 – rightskewed