重複の可能性:
Javascriptの複数の置換
文字列内の「/」のすべての出現箇所をJavaScriptの「_」に置き換えるにはどうすればよいですか?
JavaScriptでは、"11.111.11".replace(".", "")
結果は"11111.11"
。どうしてそれができるのでしょうか?
Firebugのスクリーンショット:
重複の可能性:
Javascriptの複数の置換
文字列内の「/」のすべての出現箇所をJavaScriptの「_」に置き換えるにはどうすればよいですか?
JavaScriptでは、"11.111.11".replace(".", "")
結果は"11111.11"
。どうしてそれができるのでしょうか?
Firebugのスクリーンショット:
ドキュメントからの引用:
グローバル検索と置換を実行するには、正規表現にgスイッチを含めるか、最初のパラメーターが文字列の場合は、flagsパラメーターにgを含めます。注: flags引数はv8 Core(ChromeおよびNode.js)では機能せず、Firefoxから削除されます。
したがって、次のようになります。
"11.111.11".replace(/\./g, '');
このバージョン(編集時点)はFirefoxで動作します...
"11.111.11".replace('.', '', 'g');
...しかし、まさにMDNページに記載されているように、そのサポートはまもなく廃止されます。
正規表現とフラグg
を使用すると、期待どおりの結果が得られます
"11.111.11".replace(/\./g, "")
次の理由から、正規表現を使用することが重要です。
"11.111.11".replace('.', '', 'g'); // dont' use it!!
まず、replace()はjavascript関数であり、jquery関数ではありません。
上記のコードは、最初に出現する「。」のみを置き換えます。(すべての発生ではありません)。JavaScriptで文字列が出現するたびに置き換えるには、replace()メソッドに、次のように最初のパラメーターとしてグローバル修飾子を使用した正規表現を指定する必要があります。
"11.111.11".replace(/\./g,'')