ホームページ  >  記事  >  ウェブフロントエンド  >  正規表現のまとめ(実践編)

正規表現のまとめ(実践編)

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-30 13:42:241393ブラウズ

今回は正規表現の概要(実践的なまとめ)です。実際に正規表現を使用する際の注意事項は何ですか?実際のケースを見てみましょう。

正規表現は、通常の文字 (a から z までの文字など) と 特殊文字 (メタキャラクターと呼ばれる) で構成されるテキスト パターンです。パターンは、テキストの本文を検索するときに一致する 1 つ以上の文字列を記述します。正規表現は、文字パターンと検索文字列を照合するテンプレートとして機能します。

以下のエディターは、正規表現に関するいくつかの知識ポイントをまとめています:

1. メタ文字

[特別な意味を持つメタ文字]
d -> 数字 0 に一致します。 -9 は [0-9] と同等で、その反対は D -> 0-9 を除く任意の文字と一致します
w -> 数値 0-9、a-z、A-Z、_ または文字と一致し、[0 と同等] -9a-zA-Z_]
s -> 空白文字 (スペース、タブなど) と一致します
b -> 単語の境界と一致します
n ->改行
. -> n を除く任意の文字に一致します
$ -> 文字を転送します
x|y ->
[xyz] -> x、y、z のいずれか
[^xyz] -> xyz のいずれかに一致
[^a-z] -> 任意の文字に一致a-z を除く文字
() -> 正規表現でのグループ化


1) []

について a. [+] -> [ 12-65] -> これは 12-65 ではなく 1/2-6/5 です

2) () について

a. グループ化の機能は、デフォルトの

優先度

を変更することです。 ^18|19$/、181、189、119、819、1819... はすべて準拠します。私たちが考えているような 18 または 19 ではなく、/^(18|19)$/ に変更すると、単純に 18 または 19 になります。

b. 通常のマッチのコンテンツをキャプチャしながら、グループ マッチのコンテンツもキャプチャできます - >グループ キャプチャ
c. グループ参照、例: /^(d)(w)21$/、ここで 2は 2 番目のグループと同じ内容で、1 は最初のグループと同じ内容です。例: "0aa0" は

[数量を表す数量子メタキャラクター]

* -> 0 から複数 + - と一致します。 > 1 から複数回 {n } -> 複数回出現
{n,m} -> 0 から 1 まで

注:


1) ? に関するいくつかの状況

a. 非数量詞メタキャラクターの後に配置します。つまり、0 ~ 1 回出現します。
b. 数量詞メタキャラクターの後に配置します。これは、貪欲であることを意味します。キャプチャをキャンセルする場合、例: reg=/d+/; reg.exec("2015 ") -> "2015" ただし、 reg=/d+?/; と記述すると、 "2"
c. グループの先頭に ?: を追加します。これは、現在のグループのみが一致することを意味します。例: /^(?:d+)$/

d. 先頭に ?= を追加します。グループの前方検索、例:/^abcdef(?=1|2)$/ "abcdef1" と "abcdef2" のみが一致します

e. グループの先頭に ?! を追加します。例: /^abcdef(?!1|2)$/ "abcdef1" と "abcdef2" が一貫していないことを除き、他は "abcdef (Anything)" であることだけが必要です。 [独自の意味を表すメタ文字] と一貫しています。 ]

上記に加えて、リテラル モードでは、表示される他の文字はそれぞれ独自の意味を表します

var num=12 ;
var reg=/^w"+num+"$/; ->Here "+ num+" は変数の値を結合していません。" であっても + であっても、それらはメタ文字です

-> 結合する必要がある人向け 文字列と変数については、インスタンス メソッドを使用して正規表現を作成することしかできません

2、修飾子

i ->ignoreCase は文字の大文字と小文字を無視します
g -> グローバル グローバル マッチング (g を追加すると、通常のキャプチャ中に問題が解決されます)
m -> 複数行のマッチング

3

1) 有効な数字

var reg=/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;
2) メールアドレス

 var reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
3) 電話番号

 var reg = /^1\d{10}$/;
4) 18 ~ 65 歳の年齢

 var reg = /^((18|19)|([2-5]\d)|(6[0-5]))$/;
5) 中国語名

 var reg = /^[\u4e00-\u9fa5]{2,4}$/;
6) ID カード

 var reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(?:\d{2})(\d)(?:\d|X)$/;
 //-> 12828(省市县) 1990(年) 12(月) 04(日) 06 1(奇数是男偶数是女) 7(数字或者X)

4. 通常のマッチング

reg.test([string]) ->true はマッチングが成功したことを意味します false->gt;マッチングが失敗したことを意味します

5. 通常のキャプチャ

1)reg.exec([string] )

-> 最初の一致、一致が成功した場合はキャプチャが返され、一致が失敗した場合は null が返されます。

-> 通常のキャプチャは怠惰で Greed です。怠惰の問題を解決するには、正規表現の最後にグローバル修飾子 g
を追加します。 -> 貪欲の問題を解決するには、量指定子の後に ?
を追加します。事例を読んだ後、この方法は習得できたと思います。この記事では、さらに興味深い情報については、PHP 中国語 Web サイトのその他の関連記事を参照してください。

推奨読書:

正規パターン修飾子の使用の詳細な説明

正規表現の新機能とは何ですか

以上が正規表現のまとめ(実践編)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。