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

Mar 30, 2018 pm 01:42 PM
実戦 表現

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

正規表現は、通常の文字 (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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 実践: フィボナッチ数列をすばやく実装するコード例 PHP 実践: フィボナッチ数列をすばやく実装するコード例 Mar 20, 2024 pm 02:24 PM

PHP の実践: フィボナッチ数列をすばやく実装するためのコード例 フィボナッチ数列は、数学では非常に興味深い一般的な数列です。次のように定義されています: 最初と 2 番目の数値は 0 と 1、3 番目からは数値で始まり、それぞれの数値前の 2 つの数値の合計です。フィボナッチ数列の最初のいくつかの数値は、0、1、1.2、3、5、8、13、21 などです。 PHP では、再帰と反復を通じてフィボナッチ数列を生成できます。以下ではこの2つを紹介していきます

Golang実戦:データエクスポート機能の実装ヒントを共有 Golang実戦:データエクスポート機能の実装ヒントを共有 Feb 29, 2024 am 09:00 AM

データ エクスポート機能は、実際の開発、特にバックエンド管理システムやデータ レポートのエクスポートなどのシナリオで非常に一般的な要件です。この記事では、Golang 言語を例として、データ エクスポート機能の実装スキルを共有し、具体的なコード例を示します。 1. 環境の準備 開始する前に、Golang 環境がインストールされており、Golang の基本的な構文と操作に精通していることを確認してください。さらに、データ エクスポート機能を実装するには、github.com/360EntSec などのサードパーティ ライブラリの使用が必要になる場合があります。

uniapp とミニ プログラム (写真とテキスト) を下請けに出す方法を段階的に説明します。 uniapp とミニ プログラム (写真とテキスト) を下請けに出す方法を段階的に説明します。 Jul 22, 2022 pm 04:55 PM

この記事では、uniapp クロスドメインに関する関連知識を提供し、uniapp およびミニ プログラムのサブコントラクトに関連する問題を紹介します。サブコントラクトを使用する各ミニ プログラムには、メイン パッケージが含まれている必要があります。いわゆるメイン パッケージには、デフォルトのスタートアップ ページ/TabBar ページと、すべてのサブパッケージが使用する必要があるいくつかのパブリック リソース/JS スクリプトが配置されます。一方、サブパッケージは開発者の構成に従って分割されます。皆さんのお役に立てば幸いです。

MySQL テーブル設計の実践: 電子商取引注文テーブルと製品レビュー テーブルを作成する MySQL テーブル設計の実践: 電子商取引注文テーブルと製品レビュー テーブルを作成する Jul 03, 2023 am 08:07 AM

MySQL テーブル設計の実践: 電子商取引の注文テーブルと製品レビュー テーブルの作成 電子商取引プラットフォームのデータベースでは、注文テーブルと製品レビュー テーブルは 2 つの非常に重要なテーブルです。この記事では、MySQL を使用してこれら 2 つのテーブルを設計および作成する方法を紹介し、コード例を示します。 1. 注文テーブルの設計と作成 注文テーブルは、注文番号、ユーザー ID、製品 ID、購入数量、注文ステータスなどのフィールドを含むユーザーの購入情報を保存するために使用されます。まず、CREATET を使用して「order」という名前のテーブルを作成する必要があります。

Java 開発の実践: Qiniu クラウド ストレージ サービスを統合してファイルのアップロードを実現する Java 開発の実践: Qiniu クラウド ストレージ サービスを統合してファイルのアップロードを実現する Jul 06, 2023 pm 06:22 PM

Java 開発実践: Qiniu クラウド ストレージ サービスを統合してファイル アップロードを実装する はじめに クラウド コンピューティングとクラウド ストレージの発展に伴い、ストレージと管理のためにファイルをクラウドにアップロードする必要があるアプリケーションがますます増えています。クラウド ストレージ サービスの利点は、高い信頼性、拡張性、柔軟性です。この記事では、Java 言語開発の使用方法、Qiniu クラウド ストレージ サービスの統合方法、およびファイル アップロード機能の実装方法を紹介します。 Qiniu Cloud について Qiniu Cloud は、中国の大手クラウド ストレージ サービス プロバイダーであり、包括的なクラウド ストレージおよびコンテンツ配信サービスを提供しています。ユーザーは Qiniu Yunti を使用できます

Elasticsearchのクエリ構文と実践的な戦闘についての徹底的な研究 Elasticsearchのクエリ構文と実践的な戦闘についての徹底的な研究 Oct 03, 2023 am 08:42 AM

Elasticsearch クエリ構文の詳細な研究と実践的な導入: Elasticsearch は、Lucene に基づくオープンソースの検索エンジンです。主に分散検索と分析に使用されます。大規模データの全文検索、ログ分析に広く使用されています。 、推奨システムおよびその他のシナリオ。データ クエリに Elasticsearch を使用する場合、クエリ構文を柔軟に使用することがクエリ効率を向上させる鍵となります。この記事では、Elasticsearch のクエリ構文を詳しく説明し、実際のケースに基づいて説明します。

Go 言語マスターになる: 学習パスと実践的な経験の共有 Go 言語マスターになる: 学習パスと実践的な経験の共有 Mar 04, 2024 am 10:12 AM

Go 言語のマスターになる: 学習パスと実践的な経験を共有する Go 言語は、その誕生以来開発者に好まれており、そのシンプルさ、効率性、優れた同時実行パフォーマンスにより、ますます多くの開発者が Go 言語の学習と応用に参加するようになりました。この記事では、Go 言語のマスターになるための学習パスを共有すると同時に、実際の経験と組み合わせて、参考となるコード例をいくつか紹介します。学習パス 1. 基礎知識を学ぶ どの言語を学ぶ場合でも、最初に習得するのは基礎知識です。 Go言語の基礎知識は主にデータ型、

Vue の実践: 日付ピッカー コンポーネントの開発 Vue の実践: 日付ピッカー コンポーネントの開発 Nov 24, 2023 am 09:03 AM

Vue 実践戦闘: 日付ピッカー コンポーネント開発 はじめに: 日付ピッカーは日常の開発でよく使用されるコンポーネントで、簡単に日付を選択でき、さまざまな設定オプションが提供されます。この記事では、Vue フレームワークを使用して単純な日付ピッカー コンポーネントを開発する方法を紹介し、具体的なコード例を示します。 1. 要求分析 開発を始める前に、コンポーネントの機能や特徴を明確にするために要求分析を行う必要があります。一般的な日付ピッカー コンポーネントの機能に従って、次の機能ポイントを実装する必要があります。 基本機能: 日付を選択でき、

See all articles