JavaScriptのsearchメソッドのサンプルです。
正規表現で文字列を検索し数値(インデックス)を返します。
| 確認環境 ・Windows10 ・Google Chrome |
目次
- searchメソッド
- 文字列を検索する
- 文字をORで検索する
- 文字を否定で検索する
- 文字を範囲で指定して検索する
- 先頭の文字列を検索する
- 文字列の最後尾を検索する
- 連続する文字を指定して検索する
- 連続する文字(個以上)を指定して検索する
- 1回以上出現している文字を検索する
- 1回以上出現している文字を検索する+gとiオプション
- 1桁以上の半角数値のみかをチェックする
- 1桁以上の半角数値または英字の小文字(a-f)のみかをチェックする
- 郵便番号の桁数と数値のチェックする
- 正規表現の構文
- 正規表現の主なパターン
- 正規表現の主なオプション
searchメソッド
| 変数 = 検索対象の文字列 .search(正規表現のパターン); |
- 正規表現のパターンで文字列を検索します。
- 一致した場合、マッチした箇所のインデックスを返します。
- 一致しなかった場合、-1 を返します。
- インデックスは0から始まります。
- 特定のパターンが存在するか確認するだけであればmatch/execメソッドではなくsearch/testメソッドを使用します。searchメソッドは戻り値がインデックスなので実行速度が早いです。
- Stringオブジェクトのメソッドです。
- 以下はMDNのsearchメソッドのリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/search
文字列を検索する
文字列を検索するサンプルです。
<script>
const str1 = "ABCあいう";
const p1 = /BC/;
const m1 = str1.search(p1);
console.log(m1);//1
</script>
3行目は、正規表現で文字列「BC」があるかを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
文字をORで検索する
文字をORで検索するサンプルです。
<script>
const str1 = "ABCあいう";
const p1 = /[Fい]/;
const m1 = str1.search(p1);
console.log(m1);//4
</script>
3行目は、正規表現で「F」or「い」があるかを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
文字を否定で検索する
文字を否定で検索するサンプルです。
<script>
const str1 = "ABCあいう";
const p1 = /[^Fい]/g;
const m1 = str1.search(p1);
console.log(m1);//0
</script>
3行目は、正規表現で「F」と「い」以外+全て(オプションのg)を指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
文字を範囲で指定して検索する
文字を範囲で指定して検索するサンプルです。
<script>
const str1 = "ABCあいう";
const p1 = /[A-C]/g;
const m1 = str1.search(p1);
console.log(m1);//0
</script>
3行目は、正規表現で「A」から「C」+全て(g)を指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
先頭の文字列を検索する
先頭の文字列を検索するサンプルです。
<script>
const str1 = "ABCあいう";
const p1 = /^AB/;
const m1 = str1.search(p1);
console.log(m1);//0
</script>
3行目は、正規表現で「AB」が先頭にあるかを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
文字列の最後尾を検索する
文字列の最後尾を検索するサンプルです。
<script>
const str1 = "ABCあいう";
const p1 = /いう$/;
const m1 = str1.search(p1);
console.log(m1);//4
</script>
3行目は、正規表現で「いう」が最後尾にあるかを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
連続する文字を指定して検索する
連続する文字を指定して検索するサンプルです。
<script>
const str1 = "ABCccbcccあいう";
const p1 = /c{2}/g;
const m1 = str1.search(p1);
console.log(m1);//3
</script>
3行目は、正規表現で「c」が2回出現している+全て(g)を指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
連続する文字(個以上)を指定して検索する
連続する文字(個以上)を指定して検索するサンプルです。
<script>
const str1 = "ABCccbcccあいう";
const p1 = /c{2,}/g;
const m1 = str1.search(p1);
console.log(m1);//3
</script>
3行目は、正規表現で「c」が2回以上出現している+全て(g)を指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
1回以上出現している文字を検索する
1回以上出現している文字を検索するサンプルです。
<script>
const str1 = "ABCccbcccあいう";
const p1 = /c+/;
const m1 = str1.search(p1);
console.log(m1);//3
</script>
3行目は、正規表現で「c」が1回以上出現しているを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
1回以上出現している文字を検索する+gとiオプション
1回以上出現している文字を検索する+gとiオプションのサンプルです。
<script>
const str1 = "ABCccbcccあいう";
const p1 = /c+/gi;
const m1 = str1.search(p1);
console.log(m1);//2
</script>
3行目は、正規表現で「c」or「C」(オプションのi)が1回以上+全て(g)を指定しています。
iオプションは、大文字と小文字の区別をしません。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
1桁以上の半角数値のみかをチェックする
1桁以上の半角数値のみかをチェックするサンプルです。
<script>
const str1 = "123456";
const p1 = /^[0-9]+$/;
const m1 = str1.search(p1);
console.log(m1);//0
</script>
3行目は、正規表現で1桁以上の半角数値のみかを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
1桁以上の半角数値または英字の小文字(a-f)のみかをチェックする
1桁以上の半角数値または英字の小文字(a-f)のみかをチェックするサンプルです。
<script>
const str1 = "123456abc";
const p1 = /^[0-9a-f]+$/;
const m1 = str1.search(p1);
console.log(m1);//0
</script>
3行目は、正規表現で1桁以上の半角数値または英字の小文字(a-f)のみかを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
郵便番号の桁数と数値のチェックする
郵便番号の桁数と数値のチェックするサンプルです。
<script>
const str1 = "123-4567";
const p1 = /^\d{3}-\d{4}$/;
const m1 = str1.search(p1);
console.log(m1);//0
</script>
3行目は、正規表現で郵便番号の桁数と数値のチェックを指定しています。
5行目は、文字列を正規表現で検索し、マッチした箇所のインデックスを返します。
正規表現の構文
正規表現の構文として以下2つがあります。
1つめは、正規表現リテラルです。
2つめは、RegExpオブジェクトのコンストラクタです。
| 変数 = /正規表現のパターン/オプション |
| 変数 = new RegExp('正規表現のパターン','オプション') |
正規表現の主なパターン
以下は、正規表現の主なパターンです。
| パターン | パターンの意味 |
|---|---|
| ABD | ABDという文字か。 |
| [ABD] | A or B or Dのどれか1文字が入っているか。 |
| [^ABD] | A と B と D以外の1文字が入っているか。 |
| [A-D] | A or B or C or Dのどれか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 search.) |
| i | 大文字と小文字の区別をしない(Case-insensitive search.) |
| m | 複数行をマッチする |
以下は、MDNの正規表現のリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
関連の記事
JavaScript 文字列を区切り文字で分割する(split)
JavaScript 文字列を置き換える(replace)
JavaScript 正規表現で文字列を検索し値を返す(match)
JavaScript 正規表現で文字列を検索し真偽値を返す(test)
JavaScript 正規表現で文字列を検索し値を返す(exec)