JavaScript 正規表現で真偽値を返す(testメソッド)

JavaScriptの正規表現で文字列を検索し真偽値(trueまたはfalse)を返すサンプルです。
testメソッドを使用します。

確認環境
・Windows10
・Google Chrome

目次

testメソッド

変数1 = /正規表現のパターン/;
変数 = 変数1.test(文字列);
  • 正規表現のパターンで文字列を検索します。
  • 一致した場合、trueを返します。
  • 一致しなかった場合、falseを返します。
  • 特定のパターンが存在するか確認するだけであればmatch/execメソッドではなくsearch/testメソッドを使用します。testメソッドは戻り値が真偽値なので実行速度が早いです。
  • RegExpオブジェクトのメソッドです。
  • 以下はMDNのtestメソッドのリンクです。
    https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

文字列を検索する

文字列を検索するサンプルです。

<script>

const a = /BC/;

console.log(a.test("ABC"));//true

console.log(a.test("ACB"));//false

</script>

3行目は、正規表現で文字列「BC」があるかを指定しています。
5行目はtrueに、7行目はfalseになります。

文字をORで検索する

文字をORで検索するサンプルです。

<script>

const a = /[AB]/;

console.log(a.test("ABC"));//true

console.log(a.test("ZZB"));//true

console.log(a.test("ZZZ"));//false

</script>

3行目は、正規表現で「A」または「B」があるかを指定しています。
5,7行目はtrueに、9行目はfalseになります。

文字を否定で検索する

文字を否定で検索するサンプルです。

<script>

const a = /[^A]/;

console.log(a.test("ZZZ"));//true

console.log(a.test("ZAA"));//true

console.log(a.test("AAA"));//false

</script>

3行目は、正規表現で「A」以外の文字があるか指定しています。
5,7行目は、「A」以外の文字があるのでtrueになります。
9行目は、「A」以外の文字がないのでfalseになります。

文字を範囲で指定して検索する

文字を範囲で指定して検索するサンプルです。

<script>

const a = /[A-C]/;

console.log(a.test("ABC"));//true

console.log(a.test("ZZC"));//true

console.log(a.test("ZZZ"));//false

</script>

3行目は、正規表現で「A」または「B」または「C」の文字があるか指定しています。
5,7行目は、指定の文字があるのでtrueになります。
9行目は、指定の文字がないのでfalseになります。

先頭の文字列を検索する

先頭の文字列を検索するサンプルです。

<script>

const a = /^AB/;

console.log(a.test("ABC"));//true

console.log(a.test("ACB"));//false

</script>

3行目は、正規表現で先頭に「AB」の文字があるか指定しています。
5行目は、指定の文字があるのでtrueになります。
7行目は、指定の文字がないのでfalseになります。

文字列の最後尾を検索する

文字列の最後尾を検索するサンプルです。

<script>

const a = /BC$/;

console.log(a.test("ABC"));//true

console.log(a.test("ACB"));//false

</script>

3行目は、正規表現で最後尾に「BC」の文字があるか指定しています。
5行目は、指定の文字があるのでtrueになります。
7行目は、指定の文字がないのでfalseになります。

連続する文字を指定して検索する

連続する文字を指定して検索するサンプルです。

<script>

const a = /c{2}/;

console.log(a.test("acccb"));//true

console.log(a.test("accb"));//true

console.log(a.test("acbc"));//false

</script>

3行目は、正規表現で「c」が2回連続することを指定しています。
5,7行目は、指定の文字があるのでtrueになります。
9行目は、指定の文字がないのでfalseになります。

連続する文字(個以上)を指定して検索する

連続する文字(個以上)を指定して検索するサンプルです。

<script>

const a = /c{2,}/;

console.log(a.test("acccb"));//true

console.log(a.test("accb"));//true

console.log(a.test("acbc"));//false

</script>

3行目は、正規表現で「c」が2回以上連続することを指定しています。
5,7行目は、指定の文字があるのでtrueになります。
9行目は、指定の文字がないのでfalseになります。

1回以上出現している文字を検索する

1回以上出現している文字を検索するサンプルです。

<script>

const a = /c+/;

console.log(a.test("accb"));//true

console.log(a.test("acb"));//true

console.log(a.test("ab"));//false

</script>

3行目は、正規表現で「c」が1回以上出現していることを指定しています。
5,7行目は、指定の文字があるのでtrueになります。
9行目は、指定の文字がないのでfalseになります。

1回以上出現している文字を検索する+iオプション

1回以上出現している文字を検索する+iオプションのサンプルです。

<script>

const a = /c+/i;

console.log(a.test("acb"));//true

console.log(a.test("ACB"));//true

console.log(a.test("ab"));//false

</script>

3行目は、正規表現で「c」または「C」が1回以上出現していることを指定しています。
iオプションは、大文字と小文字の区別をしません。
5,7行目は、指定の文字があるのでtrueになります。
9行目は、指定の文字がないのでfalseになります。

1桁以上の半角数値のみかをチェックする

1桁以上の半角数値のみかをチェックするサンプルです。

<script>

const a = /^[0-9]+$/;

console.log(a.test("123456"));//true

console.log(a.test("123a"));//false

console.log(a.test(""));//false

</script>

3行目は、正規表現で1桁以上の半角数値のみであることを指定しています。
5行目は、指定の文字があるのでtrueになります。
7行目は、数値以外の文字があるのでfalseになります。
9行目は、数値がないのでfalseになります。

1桁以上の半角数値または英字の小文字(a-f)のみかをチェックする

1桁以上の半角数値または英字の小文字(a-f)のみかをチェックするサンプルです。

<script>

const a = /^[0-9a-f]+$/;

console.log(a.test("123456abc"));//true

console.log(a.test("123"));//true

console.log(a.test("abc"));//true

console.log(a.test("123A"));//false

</script>

3行目は、正規表現で1桁以上の半角数値または英字の小文字(a-f)のみかを指定しています。
5,7,9行目は、指定の文字があるのでtrueになります。
11行目は、英字の大文字があるのでfalseになります。

郵便番号の桁数と数値のチェックする

郵便番号の桁数と数値のチェックするサンプルです。

<script>

const a = /^\d{3}-\d{4}$/;

console.log(a.test("123-4567"));//true

console.log(a.test("1234567"));//false

console.log(a.test("1234-567"));//false

</script>

3行目は、正規表現で郵便番号の桁数と数値であることを指定しています。
5行目は、指定の文字列なのでtrueになります。
7,9行目は、指定の文字列ではないのでfalseになります。

正規表現の構文

正規表現の構文として以下2つがあります。
1つめは、正規表現リテラルです。
2つめは、RegExpオブジェクトのコンストラクタです。

変数 = /正規表現のパターン/オプション
変数 = new RegExp('正規表現のパターン','オプション') 

上記のサンプルコードは全て正規表現リテラルを使用しています。

正規表現の主なパターン

以下は、正規表現の主なパターンです。

パターン パターンの意味
ABD ABDという文字か。
[ABD] A or B or Dのどれか1文字が入っているか。
[^ABD] A と B と D以外の1文字が入っているか。否定です。
先頭の文字の正規表現と似ています。
[A-C] A or B or C のどれか1文字が入っているか。
A|B|D A or B or Dのどれか1文字が入っているか。
[a-zA-Z] 英字の小文字のaからzまたは大文字のAからZのどれか1文字が入っているか。
^A 先頭の文字はAか。
否定の正規表現と似ています。
A$ 最後尾の文字はAか。
* *の直前の文字が0回以上の繰り返し。
+ +の直前の文字が1回以上の繰り返し。
? ?の直前の文字が0回または1回の繰り返し。
{n} n回続いている。
{n,} n回以上続いている。
 . 任意の一文字を表す。
¥s 比較する文字に、空白1文字がある。
¥S 比較する文字に、空白以外の1文字がある。
¥d 比較する文字に、数字1文字がある。 ([0-9]と同じ)
¥D 比較する文字に、数字以外の1文字がある。  ([^0-9]と同じ)
¥w 比較する文字に、小文字の英字 or 大文字の英字 or 数値 or アンダースコアの1文字がある。
[a-zA-Z0-9_]と同じ
¥W ¥wの否定。
[^¥w]と同じ

正規表現の主なオプション

以下は、正規表現の主なオプションです。

オプション 説明
g マッチしたものをすべて返す(Global test.)
i 大文字と小文字の区別をしない(Case-insensitive test.)
m 複数行をマッチする

以下は、MDNの正規表現のリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions

関連の記事

JavaScript 文字列を分割して配列にするサンプル(split)
JavaScript 文字列を置き換える(replace)
JavaScript 正規表現で値を返す(matchメソッド)
JavaScript 正規表現でインデックス値を返す(searchメソッド)
JavaScript 正規表現で値を返す(execメソッド)

△上に戻る