regex - 文字/数字/アンダースコアではない文字列内の記号をアンダースコアに置き換えます (Javascript または Typescript)?

okwaves2024-01-25  10

この質問にはすでに答えがあります: 文字列から英数字以外の文字を削除します

(10 個の回答)

3 年前

に閉店しました。

私が制御していないデータ ソースから取得したランダムな文字列があります。 私の上流システムには、そのような ID に対する要件があります。「フィールド名は文字で始まる必要があり、文字と数字のみを含めることができます」s、またはアンダースコア ('_')」。

Typescript/JavaScript (おそらく lodash を使用) で、文字/数字/アンダースコアではないすべての文字列記号をアンダースコアに置き換えるにはどうすればよいですか?

lodash を使用して正規表現か何かを書いてみましたか?複数の入力文字列が同じ出力になるため、このマングリングにより衝突が発生する可能性があることに注意してください。

– ジョンシャープ

2020 年 9 月 3 日 10:45

衝突については当然のことですが、私のユースケースでは衝突は想定しておらず、そのリスクは重大なものではありません

– オンカミ

2020 年 9 月 3 日 10:46

次のリンクに特定の文字を追加できます:- stackoverflow.com/questions/1349404/…

– ヴィシャル ナクム

2020 年 9 月 3 日 10:48



------------------------

const input = '8~3m_E!P$m%S^wx_-';
input.replace(/[\W]/gm, '_');
// output: 8_3m_E_P_m_S_wx__

注: これでは、「フィールド名は文字で始まる必要がある」という要件のこの部分はカバーされていません。ただし、それについて具体的に質問しなかったので、すでにカバーされていると思いました。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。