[JavaScript] test 正規表現で真偽値を返す

JavaScriptの正規表現で真偽値を返すサンプルです。testメソッドを使用します。

目次

メソッド testメソッド
AB 文字列を指定
[AB] 文字をORで指定
[^A] 文字を否定で指定
[A-C] 文字を範囲で指定
^A 先頭の文字列を指定
A$ 末尾の文字列を指定
c{2} 連続する文字を指定
[0-9]{1,} 数値1桁以上を指定
^[0-9]{5}$ 数値(0-9)の5桁+先頭と末尾も(0-9)
^[0-9a-f]{5}$ 数値(0-9)と英字(a-f)の5桁+先頭と末尾も(0-9 or a-f)
^[0-9]{3}-[0-9]{4}$ 郵便番号(数値3桁とハイフンと数値4桁)+先頭と末尾も(0-9)
エスケープ ドット(.)を文字として指定(エスケープ)
構文 正規表現の構文とオプション

testメソッド

変数1 = /正規表現のパターン/;
変数 = 変数1.test(文字列);
  • 正規表現のパターンで文字列を検索します。
  • 一致した場合、trueを返します。
  • 一致しなかった場合、falseを返します。
  • RegExpオブジェクトのメソッドです。

特定のパターンが存在するか確認するだけであればmatch/execメソッドではなくsearch/testメソッドを使用します。testメソッドは戻り値が真偽値なので実行速度が早くなります。

文字列を指定

<script>
const a = /BC/;

console.log(a.test("ABC"));//true
console.log(a.test("ACB"));//false
</script>

2行目は、文字列「BC」を指定しています。

文字をORで指定

<script>
const a = /[AB]/;

console.log(a.test("ABC"));//true
console.log(a.test("ZZB"));//true
console.log(a.test("ZZZ"));//false
</script>

2行目は、「A」または「B」を指定しています。

文字を否定で指定

<script>
const a = /[^A]/;

console.log(a.test("ZZZ"));//true
console.log(a.test("ZAA"));//true
console.log(a.test("AAA"));//false
</script>

2行目は、「A」以外の文字を指定しています。

文字を範囲で指定

<script>
const a = /[A-C]/;

console.log(a.test("ABC"));//true
console.log(a.test("ZZC"));//true
console.log(a.test("ZZZ"));//false
</script>

2行目は、「A」または「B」または「C」の文字を指定しています。

先頭の文字列を指定

<script>
const a = /^AB/;

console.log(a.test("ABC"));//true
console.log(a.test("ACB"));//false
</script>

2行目は、先頭が「AB」の文字を指定しています。

末尾の文字列を指定

<script>
const a = /BC$/;

console.log(a.test("ABC"));//true
console.log(a.test("ACB"));//false
</script>

2行目は、末尾が「BC」の文字を指定しています。

連続する文字を指定

<script>
const a = /c{2}/;

console.log(a.test("acccb"));//true
console.log(a.test("accb"));//true
console.log(a.test("acbc"));//false
</script>

2行目は、「c」が2回連続する文字を指定しています。

数値1桁以上を指定

<script>
	const ptr = /[0-9]{1,}-/;

	console.log(ptr.test("1-"));// true
	console.log(ptr.test("123-")); // true
	console.log(ptr.test("ab1-")); // true
	console.log(ptr.test("a1b-")); // false
</script>

2行目は、数値1桁以上とハイフン(-)を指定しています。

数値(0-9)の5桁+先頭と末尾も(0-9)

<script>
	const a = /^[0-9]{5}$/;
	
	console.log(a.test("12345")); //true
	console.log(a.test("123")); //false 桁数不足
	console.log(a.test("a2345")); //false 文字あり
</script>

 

数値(0-9)と英字(a-f)の5桁+先頭と末尾も(0-9 or a-f)

<script>
	const a = /^[0-9a-f]{5}$/;
	
	console.log(a.test("1a23b"));//true
	console.log(a.test("a1bc"));//false 桁数不足
	console.log(a.test("12345"));//true 数値のみ
	console.log(a.test("abcde"));//true 英字のみ
</script>

 

郵便番号(数値3桁とハイフンと数値4桁)+先頭と末尾も(0-9)

<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>

2行目の\dは、数値を意味します。[0-9]と同じです。

ドット(.)を文字として指定(エスケープ)

<script>
	const ptr = /a\./;

	console.log(ptr.test("a."));// true
	console.log(ptr.test("aa")); // False
</script>

2行目は、ドット(.)を文字として扱います。「a.」を指定しています。
エスケープとしてバックスラッシュ(ユニコードのU+005C)を前につけます。環境によっては円マークで表示されます。
ドット(.)にエスケープをつけない場合は任意の一文字という意味になります。

以下はMDNのtestメソッドのリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

正規表現の構文とオプション

正規表現の構文として以下2つがあります。

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

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

1つめは、正規表現リテラルです。
2つめは、RegExpオブジェクトのコンストラクタです。

主なオプション

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

オプション 説明
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] search 正規表現でインデックス値を返す

△上に戻る