【JavaScript】正規表現を使ってカンマと次の単語以降のテキストを削除する方法
文字列の中から、カンマとその直後の単語は残しつつ、それ以降のテキストだけを削除したいケースがあります。この記事では、match()メソッドとsplit()メソッドを組み合わせて実現する方法を解説します。
対象となる文字列
たとえば、次のような文字列があったとします。
var sentence = 'My Name is John, Smith I live in US';
console.log("The original value="+sentence);
ここで、「,(カンマ)」とその直後の単語「Smith」までは保持し、その後に続く「I live in US」を削除したいとします。期待する結果の文字列は以下の通りです。
My Name is John, Smith
このような処理を行うには、match()とsplit()を組み合わせて使います。
サンプルコード
var sentence = 'My Name is John, Smith I live in US';
console.log("The original value="+sentence);
var expression = sentence.match(/([^]*)(.*)/)[1];
var positionForComma = sentence.match(/([^]*),(.*)/)[2].split(' ')[1]
var newValue = expression + ', ' + positionForComma
console.log("Updated="+newValue);
コードのポイント:
sentence.match(/([^]*)(.*)/)[1]:カンマより前の部分(「My Name is John」)を取り出しています。sentence.match(/([^]*),(.*)/)[2].split(' ')[1]:カンマより後ろの文字列を半角スペースで分割し、2番目の要素(つまりカンマ直後の単語「Smith」)を取得しています。- 最後に、両者を「, (カンマ+スペース)」で連結して新しい文字列を作成しています。
プログラムの実行方法
上記のプログラムを実行するには、ターミナルまたはコマンドプロンプトから次のコマンドを使用します。
node fileName.js.
ここでは、ファイル名を demo175.js として保存したものとして説明します。
実行結果
プログラムを実行すると、以下のような出力が得られます。
PS C:\Users\Amit\javascript-code> node demo175.js The original value=My Name is John, Smith I live in US Updated=My Name is John, Smith
このように、正規表現と文字列操作メソッドを組み合わせることで、カンマと直後の単語を残して以降のテキストを簡単に削除できます。状況に応じて、slice()やindexOf()など別のアプローチも検討してみるとよいでしょう。
-
JavaScriptでフォームの名前(name)とターゲット(target)を取得する方法
HTMLフォームには通常、名前(name)とターゲット(target)が設定されています。特にフォームのバリデーション(入力値チェック)を行う場合、名前が設定されていないと処理が非常に難しくなります。JavaScriptでは、フォーム要素のnameプロパティとtargetプロパティを使うことで、これらの値をそれぞれ簡単に取得できます。以下では、それぞれの取得方法を詳しく解説します。 フォームの名前(name)を取得する サンプルコード 次の例では、document.getElementById()で取得したフォーム要素に対してnameプロパティを参照し、フォームの名前を取得しています。この名前
-
【JavaScript】正規表現で名前が半角英数字・アンダースコアのみかどうかを判定する方法
本記事では、JavaScriptの正規表現を使って、入力された名前(テキスト)が「数字・英字・アンダースコア」のみで構成されているかどうかをチェックする方法を解説します。 使用する正規表現 今回使用する正規表現は以下の通りです。 /^\w+$/ 各要素の意味は次の通りです。 ^ … 文字列の先頭を表します \w+ … 半角英字(a〜z、A〜Z)、数字(0〜9)、アンダースコア(_)のいずれかに1文字以上連続でマッチします $ … 文字列の末尾を表します つまり、文字列全体が英数字とアンダースコアだけで構成されている場合にのみマッチし、空白や他の記号が含まれるとマッチしなくなります。 サ