JS正規表現文字マッチング

hzc
リリース: 2020-06-09 16:30:39
転載
4449 人が閲覧しました

正規表現の文字マッチング

「JavaScript 正規表現ミニブック」を読んでまとめたメモです。

正規表現は、文字と位置を照合できる照合パターンです。

以下では主に文字のマッチングの状況を紹介しますが、位置のマッチングの状況も勉強中です。

2 種類のあいまい一致:

1. 水平方向のあいまい一致: 通常の一致可能な文字列の長さは固定されていません。これを行うには、量指定子を使用します。たとえば、{m,n} は、文字が少なくとも m 回、最大で n 回連続して出現することを意味します。

たとえば、/ab{2,5}c/ は、次のような文字列と一致することを意味します。最初の文字は「a」、続いて 2 ~ 5 文字の「b」、最後に文字「c」です。 。

例: (手動で試して、得られる結果について考えることができます)

var regex = /ab{2,5}c/g;
var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc";
console.log( string.match(regex) );
ログイン後にコピー

g は修飾子であり、グローバル一致、つまり、文字列内の一致条件を見つけることを意味します。すべての文字列を並べ替えます。

2. 垂直方向のあいまい一致: 通常の一致可能な文字列は、特定の文字に固有です。特定の文字である必要はなく、多くの可能性があります。実装方法は、/a[123]b/ などの文字グループ

を使用してそのような文字列に一致させることです。最初の文字は a で、2 番目の文字は '1'、'2 にすることができます。 '、' 3 つのうちのいずれか 1 つだけです。

量子 (繰り返し)

1. 一般的な省略形:

(1) {m,} は少なくとも m 回を意味します

(2) { m} は

が m 回出現することを意味します (3)? {0,1} と同等は

が出現するか出現しないことを意味します (4) {1,} と同等は少なくとも 1 回出現することを意味します

(5)* は {0,} に相当します。これは、何度でも出現できること、出現できないこと、または複数回出現する可能性があることを意味します。

2. 貪欲なマッチングと遅延マッチング

(1) 貪欲一致: /\d{2,5}/ は、数字が 2 ~ 5 回連続して出現し、可能な限り多く一致することを意味します。

var regex = /\d{2,5}/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["123", "1234", "12345", "12345"]
ログイン後にコピー

(2)遅延マッチング: /\d{2,5} ?/ は、2 ~ 5 回で十分ですが、2 回で十分な場合はそれ以上試行しないことを意味します。

var regex = /\d{2,5}?/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["12", "12", "34", "12", "34", "12", "34", "56"]
ログイン後にコピー

JS正規表現文字マッチング

文字グループ

1. 範囲表現:

(1) 省略形を省略するには、ハイフン「-」を使用します。 [ 123456abcdefGHIJKLM] は [1-6a-fG-M] と書くことができます。

(2) 注: 一致した文字列にハイフンがある場合は、先頭または末尾にハイフンを置くか、- をエスケープします。

2. 文字グループを除外する: たとえば、[^abc] は、特定の文字は何でもよいが、a、b、c で​​あることはできないことを意味します。 ^ キャレットは否定を表し、対応する範囲表現もあります。

3. 一般的な略語形式:

(1) \d[0-9] を意味します。 1 桁の

(2) \D[\^0-9] を意味します。数字以外の任意の文字。

(3) \w [0-9a-zA-Z_] を意味します。数字、大文字と小文字、アンダースコア。単語文字

とも呼ばれます (4) \W[^0-9a-zA-Z_] を意味します。単語以外の文字

(5) \s[ \t\v\n\r\f] を表します。スペース、水平タブ、垂直タブ、ラインフィード、キャリッジリターン、フォームフィードなどの空白文字を表します。

(6) \S[^ \t\v\n\r\f] を意味します。空白以外の文字

(7) .[^\n\r\u2028\u2029] を意味します。ワイルドカード文字。ほぼすべての文字を表します。例外には、改行、復帰、行区切り文字、および段落区切り文字が含まれます。

任意の文字と一致するには、 [\d\D][\w\W] 、および [ Any ^] のいずれか。

複数選択ブランチ

モードは水平方向および垂直方向のファジー マッチングを実現でき、複数選択ブランチは複数のサブモードのいずれかをサポートできます。

具体的な形式: (p1|p2|p3) p1、p2、p3 はサブパターンです。

次の問題に注意してください。

var regex = /good|goodbye/g;
var string = "goodbye";
console.log( string.match(regex) );
ログイン後にコピー

上の例で得られた結果は「良好」です

var regex = /goodbye|good/g;
var string = "goodbye";
console.log( string.match(regex) );
ログイン後にコピー

この例で得られた結果は「さようなら」です

次の結論が得られます。ブランチ構造も Lazy です。つまり、前の一致が一致した場合、後続の一致は再試行されません。

推奨チュートリアル: 「JS チュートリアル

以上がJS正規表現文字マッチングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート