0

次の文字列があるとします。

var str = '(1 + foo + 3) / bar';

そして、すべての文字列を文字だけに置き換えたいと思い'x'ます。私は試した:

str = str.replace(/\w/g, 'x');

これにより、次の結果が得られます。

(x + xxx + x) / xxx

代わりに、結果を次のようにしたいと思います。

(1 + x + 3) / x

どうすればいいですか?数字のない単語だけを見つけて、その単語を 1 文字に置き換えるにはどうすればよいですか?

4

5 に答える 5

3

[a-z]+代わりに使用しないのはなぜ\wですか?(大文字と小文字を区別しないフラグを追加するか、[a-zA-Z]代わりに使用してください)

于 2012-09-20T03:22:09.950 に答える
2
str = str.replace(/\b[a-z]+\b/ig, 'x');

\b単語の境界に一致します。そうすれば、「foo2」は「x」に変わりません。他の人が言及したよう\wに数字が含まれていますが、アンダースコアも含まれているので、それを使用したくないでしょう。修飾子は大文字と小文字を区別しないマッチングを行います(i少し読みやすくするため)。

于 2012-09-20T04:23:49.953 に答える
1

使用する:

str = str.replace(/[a-z]+/ig, 'x');
于 2012-09-20T03:23:08.570 に答える
1

[a-zA-Z]代わりに使用してみてください。\wと同等[a-zA-Z0-9_]です。

str = str.replace(/[a-zA-Z]+/g, 'x');
于 2012-09-20T03:23:08.893 に答える
1

この正規表現を試すことができます:

str = str.replace(/[a-z]+/ig, 'x');

[az] - 任意の文字を探していることを示す。

+ 組み合わせ (xxx) を探していることを示す。

i テキストの一致で大文字と小文字が区別されないことを示します。

g - 文字列全体ですべての一致を探していることを示します。

また

あなたが使用することができます

   [a-zA-Z]

小文字の az と大文字の az を探します。これは case 修飾子なしで使用するためのものです。

于 2012-09-20T03:24:24.130 に答える