1. ホーム
  2. ジャバスクリプト

[解決済み】RegExpですべての特殊文字を削除する

2022-03-30 23:51:03

質問

文字列からすべての特殊文字を削除するRegExpが欲しいです。私はこのようなものを試していますが、Firefoxでは動作しますが、IE7では動作しません。

var specialChars = "!@#$^&%*()+=-[]\/{}|:<>?,.";

for (var i = 0; i < specialChars.length; i++) {
  stringToReplace = stringToReplace.replace(new RegExp("\\" + specialChars[i], "gi"), "");
}

RegExpの詳細な説明もあると助かります。

どのように解決するのですか?

var desired = stringToReplace.replace(/[^\w\s]/gi, '')

コメントで言及されているように、ホワイトリストとしてこれを行うのはより簡単です。 ではない をセーフリストに追加してください。

キャレット( ^ ) 文字は,集合の否定 [...] , gi はグローバルで大文字小文字を区別せず(後者は少し冗長ですが、触れておきたいと思います)、この例のセーフリストは数字、単語文字、アンダースコア( \w ) とホワイトスペース ( \s ).