【JavaScript】指定した文字列を含むか調べる便利な方法|startsWith, endsWith, indexOf, lastIndexOf, search, test

javascript-prograshi(プロぐらし)-kv JavaScript
記事内に広告が含まれていることがあります。
[PR]

JavaScriptで文字列の中に指定した文字列が入っているかを調べるときに便利なメソッドが用意されています。

指定した文字列を含むか調べる便利なメソッド一覧

主なメソッドは以下の6つです。

メソッド内容
starsWith指定した文字列で始まる場合にtrueを返す
endsWith指定した文字列で終わる場合にtrueを返す
indexOf指定した文字列が開始するインデックス番号を返す。マッチしない場合は-1を返す
lastIndexOfindexOfの逆検索。indexOfは前方から検索するのに対し、後方から検索する
search指定したパターンに一致したインデックス番号を返す。マッチしない場合は-1を返す
test指定したパターンに一致するものがあればtrueを返す

starsWithメソッド

指定した文字列で始まっているかを確認するメソッドです。

基本構文

str.startsWith("検索する文字列"[, 開始位置])

第2引数で検索を開始する位置を指定することができます。

対象は文字列なので、1文字目が0番目、2文字目が1番目、、、となります。


実例

例1:一致する

str = "大切な番号は★1234★です。"
str.startsWith("大切な")

#出力
true

例2:一致しない

str = "大切な番号は★1234★です。"
str.startsWith("番号は")

#出力
false

例3:開始番号を指定

str = "大切な番号は★1234★です。"
str.startsWith("番号は", 3)

#出力
true


endsWithメソッド

指定した文字列で終わっているかを確認するメソッドです。

基本構文

str.endsWith("検索する文字列"[, 文字列の長さ])

第2引数で検索する文字列の長さを指定することができます。

例えば、10と指定するれば、検索対象の文字列の前方から10文字までが対象となります。


実例

例1:一致する

str = "大切な番号は★1234★です。"
str.endsWith("です。")

#出力
true

例2:一致しない

str = "大切な番号は★1234★です。"
str.endsWith(1234)

#出力
false

例3:検索対象の文字数を指定

str = "大切な番号は★1234★です。"
str.endsWith(1234, 11)

#出力
true


indexOfメソッド

指定した文字列が開始するインデックス番号を返します。存在しない場合は-1を返します。

基本構文

arr.indexOf("検索する文字列"[, 検索の開始位置])

第2引数で検索を開始する位置を指定することができます。

対象は文字列なので、1文字目が0番目、2文字目が1番目、、、となります。

注意点

第2引数で検索の開始位置を指定した場合でも、戻り値は対象の文字列(配列)全体のでのインデックス番号を返します。


実例

例1:存在する

str = "大切な番号は★1234★です。"
str.indexOf("番号")

#出力
3

例2:存在しない

str = "大切な番号は★1234★です。"
str.indexOf("テスト")

#出力
-1

例3:開始番号を指定(存在しない)

str = "大切な番号は★1234★です。"
str.indexOf("番号", 4)

#出力
-1

例4:開始番号を指定(存在する)

str = "大切な番号は★1234★です。"
str.indexOf("番号", 2)

#出力
3


lastIndexOfメソッド

indexOfが前から検索して、指定した文字列が開始するインデックス番号を返します。存在しない場合は-1を返します。

これに対して、lastIndexOfは後ろから検索します。

基本構文

arr.indexOf("検索する文字列"[, 検索の開始位置])

第2引数で検索を開始する位置を指定することができます。

対象は文字列なので、1文字目が0番目、2文字目が1番目、、、となります。


実例

str = "大切な番号は★1234★です。"
str.lastIndexOf("★")

#出力
11


▼indexOfの場合

str = "大切な番号は★1234★です。"
str.indexOf("★")

#出力
6


searchメソッド

指定したパターンがあるか調べるメソッドです。引数はパターンを指定します。

存在する場合はマッチしたインデックス番号を返します。存在しない場合は-1を返します。

引数のパターンは /パターン/か、new RegExpで生成した正規表現のオブジェクトを指定します。

基本構文

str.search(regexp)


実例

例1:マッチする

str = "大切な番号は★1234★です。"
str.search(/[0-9]/)

#出力
7

例2:マッチしない

str = "大切な番号は★1234★です。"
str.search(/test/)

#出力
-1

例3:変数に代入して渡す

str = "大切な番号は★1234★です。"

regexp = /[0-9]/
str.search(regexp)


#出力
7


testメソッド

正規表現(パターン)をオブジェクトとして、文字列の中にそのパターンに一致するものがあるか確認します。

一致するものがあればtrueをなければfalseを返します。

startsWithやendsWithと異なり引数に文字列を渡します。

基本構文

regexObj.test(文字列)
regexObjとは?

regexObjとは、正規表現(パターン)を指定するオブジェクトです。作成方法は2つあります。

  1. /パターン/
  2. new RegExp('パターン')

/パターン/

/ /で囲むことで正規表現のオブジェクトであることを指定します。

/[0-9]/

new RegExp(‘パターン’)

RegExpクラスからインスタンスを生成します。

number = new RegExp('[0-9]')


実例

例1:/ /を使う

str = "大切な番号は★1234★です。"
/[0-9]/.test(str)

#出力
true

引数で渡した文字列の中に数値が含まれているのでtrueを返します。

例2:new RegExpを使う

str = "大切な番号は★1234★です。"

number = new RegExp('[0-9]')
number.test(str)

#出力
true


マッチする文字列を抽出・変換するメソッド

マッチする文字列を抽出・変換する主なメソッドは次の4つになります。

メソッド内容
match指定したパターンにマッチする文字列を返す
replace指定したパターンにマッチする文字列を置換する
replaceAll指定したすべての文字列を置換する
split指定した文字列やパターンで区切って配列を返す


参考リンク


タイトルとURLをコピーしました