0

次のような変数があります。

var name = 'John, Doe';

この名前も次のように表すことができます。

var name = 'john , doe';

また

var name = 'john ,doe';

あるいは

var name = 'john    ,   doe';

すべての場合において、名前を次のようにしたいと思います。

var name = 'john*doe';

次のようなことをすることで、私はすでに DRY の原則に違反しています。

name= name.replace(' ,', '*');
name= name.replace(', ', '*');
name = name.replace(',', '*');

これは余分な空白を考慮していません。これを処理するために適用できる正規表現パターンはありますか?

ありがとう

4

3 に答える 3

4

次のことを試してみますか?

name = name.replace(/\s*,\s*/, '*');

@Bergiの回答では、gすべてのコンマ(空白を含む)をキャッチするフラグも追加されているため、入力によっては、これでも機能する場合があります。

于 2013-03-14T18:29:48.700 に答える
4

\s空白文字クラス を複数回繰り返すことができます:

name = name.replace(/\s*,\s*/g, '*');
于 2013-03-14T18:29:58.537 に答える
2

次のことができます

name = name.replace(/[ ]*,[ ]*/, '*');

わかりやすくするために [] にスペースを入れました。

JavaScript の正規表現はそれを回避する必要があることに注意してください/。パターンは、0 または 1 個のスペース、コンマ、0 または 1 個のスペースに一致します。


\sスペースの代わりにタブも使用できる場合。\sどんな空間にもマッチします。そう :

name = name.replace(/\s*,\s*/, '*');
于 2013-03-14T18:28:57.710 に答える