2つ目のアンダースコア(アンダーバー)までの文字列を取得する方法を調べました。
やりたいこと
以下のような文字列があるとする。
“Test1_Test2_test3_test4”
この文字列から2つ目のアンダースコアまでの部分をJavascriptで取り出したい。
以下の部分がぬき出せればいい。
“Test1_Test2”
2つ目のアンダースコア(アンダーバー)までの文字列を取得する方法
それでは2つ目のアンダースコアまでの値をJavascriptを使って取得したいと思います。
match()メソッドを使用し正規表現を使って抜き出しています。
let value = “Test1_Test2_test3_test4”;
let getval = value.match(/^[^_]*_[^_]*/); //配列として代入される
console.log(getval[0]); // Test1_Test2
以上で取得できました。
正規表現については以下を参考にしていただければと思います。
せっかくなので2つめのアンダースコアも含む場合のサンプルコードも残します。
let value = “Test1_Test2_test3_test4”;
let getval = value.match(/^[^_]*_[^_]*_/);//配列として代入される
console.log(getval[0]); // Test1_Test2_
ちなみに「^[^_]*」で1つのアンダースコアを現しているので数を増やせば2つめ「^[^_]*_[^_]*」3つめ「^[^_]*_[^_]*_[^_]*」のアンダースコアの数を調整することも可能です。
ついでに3つめのアンダースコアまで取得するサンプルコード。
let value = “Test1_Test2_test3_test4”;
let getval = value.match(/^[^_]*_[^_]*_[^_]*/);//配列として代入される
console.log(getval[0]); // Test1_Test2_test3
おわり
少しアンダースコアが怖くなくなりました。
調べていたら正規表現を確認するのに便利なサイトを見つけたのでリンクを残します。
参考
正規表現確認便利サイト:https://regex101.com/
参考元サイト:REGEXP to grab all text before second underscore, including second underscore