[解決済み】文字列から英数字でない文字を削除する
2022-02-18 23:23:47
質問
次のような文字列を、指定された出力に変換したい。
Input: "\\test\red\bob\fred\new"
Output: "testredbobfrednew"
のような特殊文字を処理するソリューションは見つかっていません。
\r
,
\n
,
\b
など。
基本的には英数字以外を取り除きたいだけです。以下は、私が試したことです...
Attempt 1: "\\test\red\bob\fred\new".replace(/[_\W]+/g, "");
Output 1: "testedobredew"
Attempt 2: "\\test\red\bob\fred\new".replace(/['`~!@#$%^&*()_|+-=?;:'",.<>\{\}\[\]\\\/]/gi, "");
Output 2: "testedobred [newline] ew"
Attempt 3: "\\test\red\bob\fred\new".replace(/[^a-zA-Z0-9]/, "");
Output 3: "testedobred [newline] ew"
Attempt 4: "\\test\red\bob\fred\new".replace(/[^a-z0-9\s]/gi, '');
Output 4: "testedobred [newline] ew"
もう一つの試みは、複数のステップで
function cleanID(id) {
id = id.toUpperCase();
id = id.replace( /\t/ , "T");
id = id.replace( /\n/ , "N");
id = id.replace( /\r/ , "R");
id = id.replace( /\b/ , "B");
id = id.replace( /\f/ , "F");
return id.replace( /[^a-zA-Z0-9]/ , "");
}
結果とともに
Attempt 1: cleanID("\\test\red\bob\fred\new");
Output 1: "BTESTREDOBFREDNEW"
何かお手伝いいただけると幸いです。
ワーキングソリューションです。
Final Attempt 1: return JSON.stringify("\\test\red\bob\fred\new").replace( /\W/g , '');
Output 1: "testredbobfrednew"
解決方法は?
英数字以外の文字を削除する
入力文字列から英数字以外の文字を取り除く正しい正規表現は次のとおりです。
input.replace(/\W/g, '')
なお
\W
は、次のものと同等です。
[^0-9a-zA-Z_]
- はアンダースコア文字を含んでいます。アンダースコアも削除したい場合は、次のようにします。
input.replace(/[^0-9a-z]/gi, '')
入力が不正です
テスト文字列には英数字ではない様々なエスケープ文字が含まれているため、それらを削除します。
文字列中のバックスラッシュは、文字通りに解釈するならば、エスケープする必要があります。
"\\test\\red\\bob\\fred\\new".replace(/\W/g, '')
"testredbobfrednew" // output
不正な文字列の処理
入力文字列を正しくエスケープできない場合(なぜできないのか)、あるいは入力文字列が何らかの信頼できない/設定されていないソースから来る場合 - このようにすることができます。
JSON.stringify("\\test\red\bob\fred\new").replace(/\W/g, '')
"testredbobfrednew" // output
文字列のjson表現には引用符が含まれることに注意してください。
JSON.stringify("\\test\red\bob\fred\new")
""\\test\red\bob\fred\new""
しかし、これらは置換正規表現によっても削除されます。
関連
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] JavaScriptでランダムな文字列/文字を生成する
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】エラー:リクエストのエンティティが大きすぎる
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools