LoginSignup
7
5

More than 5 years have passed since last update.

javascriptで特定の文字が含まれているか確認する【注意:matchとincludesの違い】

Last updated at Posted at 2017-07-31

javascriptで特定の文字列が含まれているか確認する方法

javascriptにて特定の文字列が含まれている確認する方法を2つ紹介します、

もちろんjsにはその他にも判定する方法はたくさんありますが、
実際にはまってエラーを大量発生させたので、その原因となった2つのメソッドの正しくない利用方法も紹介します。

includesメソッド

includesメソッドは特定の文字列が含まれるか、含まれていないかをbool型で返してくれます。

example.com/category/cute/
console.log("------includes--------");
console.log(location.href.includes("/category/"));

image.png

【ブラウザ実装状況に注意】

非常に便利ですが、以前対応ブラウザを確認せずに利用して、
古いAndroidとiPhoneにて商品一覧が出ないというクレームにつながりました。

image.png
MDN web docsより引用

matchメソッド

【matchメソッドの戻り値は bool型ではないことに注意】

example.com/category/cute/
console.log(location.href.match("/category/"));

image.png

【categoryが含まれない場合は nullが返る】

example.com/
console.log(location.href.match("/category/"));

image.png

【matchメソッドで文字が含まれるか確認する方法】

example.com/category/cute/
console.log("------match--------");
console.log(location.href.match("/category/")!=null);

image.png

ただ、jsのnullはif文に入れるとfalse判定されるので入れなくても使える説がありますがあまりよろしくないように思えます

【ブラウザ実装状況】

ブラウザ実装状況は優良です。

image.png
js studioより引用

includesとmatchメソッドの違い

古いブラウザにも対応したい場合はmatchメソッド。
最新のブラウザだけ対応すればよく、綺麗に書きたいのであればincludesメソッド。

そもそもmatchメソッドには別の用途があるのでこれで判断するのが正しいとは言えませんが、そう使い分けたいと思います。

index.js
console.log("------match--------");
console.log(location.href.match("/category/")!=null);
console.log("------includes--------");
console.log(location.href.includes("/category/"));

image.png

7
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5