64

文字列からすべての特殊文字とスペースを削除し、アンダースコアに置き換えたい。文字列は

    var str = "hello world & hello universe";

私は今これを持っています、それはスペースだけを置き換えます:

      str.replace(/\s/g, "_");

結果はですがhello_world_&_hello_universe、特殊記号も削除したいと思います。

私はこれを試しましstr.replace(/[^a-zA-Z0-9]\s/g, "_")たが、これは役に立ちません。

4

5 に答える 5

154

正規表現[^a-zA-Z0-9]\s/gは、数字または文字の後にスペースが続く文字ではない任意の文字に一致すると述べています。

すべての特殊文字に _ が必要な場合は、 \s を削除すると、目的のものが得られるはずです。

var newString = str.replace(/[^A-Z0-9]/ig, "_");

その結果、hello_world___hello_universe

単一のアンダースコアにしたい場合は、+ を使用して複数に一致させます

var newString = str.replace(/[^A-Z0-9]+/ig, "_");

その結果、hello_world_hello_universe

于 2012-10-22T21:36:40.520 に答える
4

新しい正規表現から を削除する\sと、機能するはずです。空白は「英数字以外」に既に含まれています。

複数のアンダースコアのシーケンスを取得しないように、の+後にa を追加することをお勧めします。文字列の先頭または末尾にあるアンダースコアを削除するために]チェーンすることもできます。.replace(/^_+|_+$/g,'')

于 2012-10-22T21:36:28.597 に答える