検索
ホームページバックエンド開発PHPチュートリアル一般的に使用される PHP 正規表現

一般的に使用される PHP 正規表現

1. 通常の文字

は、メタキャラクターとして明示的に指定されていないすべての印刷文字と非印刷文字で構成されます。これには、すべての大文字と小文字のアルファベット (a ~ z)、すべての数字 (o ~ 9)、すべての句読点、および一部の記号が含まれます。

2 つの非印刷文字

文字の意味

cx は、x で指定された制御文字と一致します。たとえば、cM は Control-M または復帰文字と一致します。 x の値は、A ~ Z または a ~ z のいずれかでなければなりません。それ以外の場合、c はリテラルの「c」文字として扱われます。

f はフォーム フィード文字と一致します。 x0c および cL に相当します。

n は改行文字と一致します。 x0a および cJ に相当します。

r は復帰文字と一致します。 x0d および cM に相当します。

は、スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します。 【fnrtv】に相当。

S は空白以外の文字に一致します。 [^ fnrtv] に相当します。

タブ文字と一致しません。 x09 および cI に相当します。

v は垂直タブ文字と一致します。 x0b および cK に相当します。

3. 特殊文字 (メタキャラクター)

いわゆる特殊文字とは、上記の「*.txt」の * などの特別な意味を持つ文字のことで、簡単に言えば、任意の文字列の意味を意味します。ファイル名に * が含まれるファイルを検索する場合は、* をエスケープする、つまり * の前に 1 を追加する必要があります。 ls*.txt。正規表現には次の特殊文字があります。

特殊文字の説明

$ は入力文字列の末尾と一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は 'n' または 'r' にも一致します。 $ 文字そのものと一致させるには、$ を使用します。

( ) は部分式の開始と終了をマークします。部分式は後で使用するために取得できます。これらの文字と一致させるには、( と ) を使用します。

* 直前の部分式と 0 回以上一致します。 * 文字と一致させるには、* を使用します。

+ は、前の部分式に 1 回以上一致します。 + 文字と一致させるには、+ を使用します。

。改行文字 n を除く任意の 1 文字と一致します。 . と一致させるには、 を使用します。

[ は角括弧式の始まりを示します。 [ と一致させるには、[ を使用します。

? 先行する部分式と 0 回または 1 回一致するか、非貪​​欲修飾子を指定します。 ? 文字に一致させるには、? を使用します。

次の文字を特殊文字、リテラル文字、後方参照、または 8 進エスケープ文字としてマークします。たとえば、「n」は文字「n」と一致します。 「n」は改行文字に一致します。シーケンス '\' は "" に一致し、シーケンス '(' は "(" に一致します。

^ は、角括弧式で使用されない限り、入力文字列の先頭と一致します。角括弧式で使用される場合は、文字セットが受け入れられないことを示します。 ^ 文字そのものと一致させるには、^ を使用します。

{修飾子式の始まりを示します。 { と一致させるには、{ を使用します。

|2 つの項目から選択を示します。 | と一致させるには、| を使用します。

4 つの予選

修飾子は、一致を満たすために正規表現の特定のコンポーネントが何回出現する必要があるかを指定するために使用されます。 * または + または ? または {n} または {n,} または {n,m} の 6 種類があります。

*、+、および ? 修飾子はすべて、後ろに ? を追加することで可能な限り多くのリテラルと一致するという点で貪欲です。

正規表現の修飾子は次のとおりです:

キャラクターの説明

* 直前の部分式と 0 回以上一致します。たとえば、zo* は「z」と「zoo」に一致します。 * {0,} に相当します。

+ は、前の部分式に 1 回以上一致します。たとえば、「zo+」は「zo」と「zoo」には一致しますが、「z」には一致しません。 + は {1,} と同等です。

? 直前の部分式と 0 回または 1 回一致します。たとえば、「do(es)?」は「do」または「does」の「do」と一致します。 ? {0,1} に相当します。

{n}n は負ではない整数です。特定の回数 n 回一致します。たとえば、「o{2}」は「Bob」の「o」と一致できませんが、「food」の 2 つの o と一致します。

{n,}n は負ではない整数です。少なくとも n 回一致します。たとえば、「o{2,}」は「Bob」の「o」とは一致しませんが、「foooood」のすべての「o」には一致します。 「o{1,}」は「o+」と同等です。 「o{0,}」は「o*」と同等です。

{n,m}m と n は両方とも非負の整数であり、n

5 ロケーター

は文字列または単語の境界を表すために使用され、^ と $ はそれぞれ文字列の先頭と末尾を指し、b は単語の前または後ろの境界を表し、B は単語以外の境界を表します。修飾子はロケーターでは使用できません。

6. 区切り文字

文字、数字、バックスラッシュ以外の文字 (| |、//、{}、!! など) を区切り文字として使用できますが、特別な必要がない場合は、スラッシュ // は正規表現の区切り文字として機能します。

7.

を選択します。

すべての選択項目をかっこで囲み、隣接する選択項目を | で区切ります。ただし、括弧を使用すると、関連する一致がキャッシュされるという副作用が生じます。この場合、最初のオプションの前に ?: を使用すると、この副作用を排除できます。

このうち、?: は非キャプチャー要素の 1 つで、他の 2 つの非キャプチャー要素は ?= と ?! です。これら 2 つは前方参照であり、一致を開始します。正規表現パターンは、正規表現パターンに一致しない任意の位置の検索文字列に一致します。後者は、正規表現パターンに一致しない任意の最初の位置にある検索文字列に一致します。


8. 後方参照

正規表現パターンまたはパターンの一部をかっこで囲むと、関連付けられた一致が一時バッファに保存され、各部分一致が正規表現パターンの左から右に検出されるようにキャプチャされます。部分一致が格納されるバッファには、1 から始まり、最大 99 個の部分式まで連続した番号が付けられます。各バッファーには、「n」を使用してアクセスできます。n は、特定のバッファーを識別する 1 桁または 2 桁の 10 進数です。

非キャプチャメタ文字「?:」、「?=」、または「?!」を使用して、関連する一致の保持を無視できます。

9. すべての記号の説明

キャラクターの説明

次の文字を特殊文字、リテラル文字、後方参照、または 8 進エスケープ文字としてマークします。たとえば、「n」は文字「n」と一致します。 「n」は改行文字に一致します。シーケンス「\」は「」に一致し、「(」は「(」に一致します。

^ は入力文字列の先頭と一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は 'n' または 'r' の後の位置にも一致します。

$ は入力文字列の終了位置と一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は 'n' または 'r' の前の位置にも一致します。

* 直前の部分式と 0 回以上一致します。たとえば、zo* は「z」と「zoo」に一致します。 * {0,} に相当します。

+ は、前の部分式に 1 回以上一致します。たとえば、「zo+」は「zo」と「zoo」には一致しますが、「z」には一致しません。 + は {1,} と同等です。

? 直前の部分式と 0 回または 1 回一致します。たとえば、「do(es)?」は「do」または「does」の「do」と一致します。 ? {0,1} に相当します。

{n}n は負ではない整数です。特定の回数 n 回一致します。たとえば、「o{2}」は「Bob」の「o」と一致できませんが、「food」の 2 つの o と一致します。

{n,}n は負ではない整数です。少なくとも n 回一致します。たとえば、「o{2,}」は「Bob」の「o」とは一致しませんが、「foooood」のすべての「o」には一致します。 「o{1,}」は「o+」と同等です。 「o{0,}」は「o*」と同等です。

{n,m}m と n は両方とも非負の整数であり、n

?この文字が他の修飾子 (*、+、?、{n}、{n,}、{n,m}) のすぐ後に続く場合、一致パターンは非貪欲です。非貪欲モードは検索文字列の可能な限り少ない部分と一致しますが、デフォルトの貪欲モードは検索文字列の可能な限り多くの部分と一致します。たとえば、文字列「oooo」の場合、「o+?」は単一の「o」に一致しますが、「o+」はすべての「o」に一致します。

。「n」を除く任意の 1 文字と一致します。 「n」を含む任意の文字と一致するには、「[.n]」のようなパターンを使用します。

(パターン) はパターンと一致し、この一致を取得します。取得された一致は、VBScript の SubMatches コレクションまたは JScript の $0 ~ $9 プロパティを使用して、生成された Matches コレクションから取得できます。括弧文字と一致させるには、「(」または「)」を使用します。

(?:pattern) はパターンに一致しますが、一致結果は取得されません。これは、非取得一致であり、後で使用するために保存されないことを意味します。これは、「または」文字 (|) を使用してパターンの一部を結合する場合に便利です。たとえば、「industr(?:y|ies)」は「industry|industries」より短い式です。

(?=pattern) 前方参照。文字列一致パターンの先頭にある検索文字列と一致します。これは非フェッチ一致です。つまり、後で使用するために一致をフェッチする必要はありません。たとえば、「Windows (?=95|98|NT|2000)」は、「Windows 2000」の「Windows」には一致しますが、「Windows 3.1」の「Windows」には一致しません。プリフェッチでは文字は消費されません。つまり、一致が発生した後、次の一致の検索は、プリフェッチを含む文字の後に開始されるのではなく、最後の一致の直後に開始されます。

(?!pattern) 否定検索。pattern に一致しない文字列の先頭にある検索文字列と一致します。これは非フェッチ一致です。つまり、後で使用するために一致をフェッチする必要はありません。たとえば、「Windows (?!95|98|NT|2000)」は、「Windows 3.1」の「Windows」と一致しますが、「Windows 2000」の「Windows」とは一致しません。プリフェッチは文字を消費しません。つまり、一致が発生した後、次の一致の検索は、プリフェッチ

を含む文字の後に開始されるのではなく、最後の一致の直後に開始されます。

x|y は x または y と一致します。たとえば、「z|food」は「z」または「food」と一致します。 '(z|f)ood' は、「zood」または「food」と一致します。

[xyz] 文字セット。含まれている文字のいずれかと一致します。たとえば、「[abc]」は「plain」の「a」と一致します。

[^xyz] 負の値の文字セット。含まれていない任意の文字と一致します。たとえば、「[^abc]」は「plain」の「p」と一致します。

[a-z] 文字範囲。指定された範囲内の任意の文字と一致します。たとえば、「[a-z]」は、「a」から「z」の範囲内の任意の小文字の英字と一致します。

[^a-z] 負の文字範囲。指定された範囲内にない任意の文字と一致します。たとえば、「[^a-z]」は、「a」から「z」の範囲にない任意の文字と一致します。

b は、単語とスペースの間の位置を指す単語境界に一致します。たとえば、「erb」は「never」の「er」と一致しますが、「verb」の「er」とは一致しません。

B は単語以外の境界に一致します。 「erB」は「動詞」の「er」と一致しますが、「never」の「er」とは一致しません。

cx は、x で指定された制御文字と一致します。たとえば、cM は Control-M または復帰文字と一致します。 x の値は、A ~ Z または a ~ z のいずれかでなければなりません。それ以外の場合、c はリテラルの「c」文字として扱われます。

d は数字と一致します。 [0-9]に相当します。

D は数字以外の文字と一致します。 [^0-9] と同等。

f はフォーム フィード文字と一致します。 x0c および cL に相当します。

n は改行文字と一致します。 x0a および cJ に相当します。

r は復帰文字と一致します。 x0d および cM に相当します。

は、スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します。 【fnrtv】に相当。

S は空白以外の文字に一致します。 [^ fnrtv] に相当します。

タブ文字と一致しません。 x09 および cI に相当します。

v は垂直タブ文字と一致します。 x0b および cK に相当します。

w は、アンダースコアを含む任意の単語文字に一致します。 「[A-Za-z0-9_]」と同等。

W は単語以外の文字に一致します。 「[^A-Za-z0-9_]」と同等。

xn は n と一致します。n は 16 進数のエスケープ値です。 16 進数のエスケープ値は、正確に 2 桁の長さである必要があります。たとえば、「x41」は「A」と一致します。 「x041」は「x04」および「1」と同等です。 ASCII エンコーディングは正規表現で使用できます。 .

num は num と一致します (num は正の整数)。取得した一致への参照。たとえば、「(.)1」は、連続する 2 つの同一の文字に一致します。

n は、8 進エスケープ値または後方参照を識別します。 n の前に少なくとも n 個のフェッチされた部分式がある場合、n は後方参照になります。それ以外の場合、n が 8 進数 (0 ~ 7) の場合、n は 8 進数のエスケープ値になります。

nm フラグは、8 進エスケープ値または後方参照を識別します。 nm の前に少なくとも nm 個の取得可能な部分式がある場合、nm は後方参照になります。 nm の前に少なくとも n が取得されている場合、n は後方参照であり、その後にリテラル m が続きます。前述の条件がどちらも当てはまらず、n と m が両方とも 8 進数 (0 ~ 7) である場合、nm は 8 進数のエスケープ値 nm と一致します。

n が 8 進数 (0 ~ 3) で、m と l が両方とも 8 進数 (0 ~ 7) である場合、

nml は 8 進数エスケープ値 nml と一致します。

un は n と一致します。n は 4 桁の 16 進数で表される Unicode 文字です。たとえば、u00A9 は著作権記号 (?) に一致します。

10.パターン修飾子の構成

パターン修飾子は文字ですが、これらはパターン修飾子の適用において特別な意味を持ちます。利用可能なパターン修飾子を以下の表で見てみましょう:

パターン修飾子の説明

パターンとのマッチングでは大文字と小文字が区別されないことを意味します

m は、パターンを複数行として扱います。^ と $ を使用して、任意の行が正規表現

で開始または終了できることを示します。

sこのモード修正記号が使用されない場合、デフォルトではメタキャラクター内の「.」は改行記号を表すことができず、文字列は単一行として扱われます

x はパターン内の空白が無視されることを意味します

正規表現は、文字列を置換する preg_replace 関数で使用される場合にのみ使用できます (この関数については後ほど説明します)

A は、メタキャラクター ^

に相当するパターン文字列で始まります。

Z はパターン文字列で終わり、メタキャラクター $

に相当します

U 正規表現の特徴: 比較的「貪欲」なモードを解除するには、このモード修飾子を使用します

最後の注意: PHP 正規表現でエスケープする必要がある文字は次のとおりです:

$^*()+={}[]|/:<>.?&#39;" 


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
如何使用PHP正则表达式验证输入是否是IPv6地址如何使用PHP正则表达式验证输入是否是IPv6地址Jun 25, 2023 am 09:37 AM

IPv6是指InternetProtocolVersion6,是用于互联网通信的一种IP地址协议。IPv6地址是由128个比特位组成的数字,通常用8个16进制数分组表示。在PHP中,可以使用正则表达式来验证输入是否是IPv6地址,下面就介绍一下如何使用PHP正则表达式验证IPv6地址。第一步:了解IPv6地址的格式IPv6地址由8个16进制块组成,每个

如何用PHP正则表达式验证字符串是否为空如何用PHP正则表达式验证字符串是否为空Jun 24, 2023 am 08:46 AM

在PHP中,我们可以使用正则表达式来验证字符串是否为空。字符串为空的情况包括以下情况:字符串只包含空格。字符串长度为0。字符串为null或者未定义。接下来,我们将介绍如何使用PHP中的正则表达式来验证这些情况。正则表达式:s+这个正则表达式可以用来匹配只包含空格的字符串。其中s表示匹配空格,+表示匹配一个或多个。代码示例:functionisEmptySt

如何用PHP正则表达式验证电话号码格式如何用PHP正则表达式验证电话号码格式Jun 24, 2023 am 08:44 AM

在编写Web应用程序时,经常需要进行电话号码的验证。PHP中常用的方法是使用正则表达式来判断电话号码的格式是否正确。正则表达式是一个强大的工具,它可以帮助您在简洁的语句中确定某些模式。下面是在PHP中使用正则表达式来验证电话号码格式的示例。首先,让我们定义电话号码的通用格式。电话号码可以包含数字、括号、连字符和空格。一个标准的电话号码应该包含10个数字,前

PHP正则表达式验证输入字符串是否为身份证号码或护照号码格式PHP正则表达式验证输入字符串是否为身份证号码或护照号码格式Jun 24, 2023 pm 12:11 PM

身份证号码和护照号码是人们生活中常见的证件号码。在实现涉及到这些证件号码的功能时,经常需要对输入的号码进行格式验证,以确保其正确性。而在PHP中,使用正则表达式可以很好地实现这一功能,本文就介绍如何使用PHP正则表达式验证输入字符串是否为身份证号码或护照号码格式。一、身份证号码验证身份证号码是由18位数字和最后一位可能是字母(校验码)组成的,其格式如下:前6

如何用PHP正则表达式验证URL地址格式如何用PHP正则表达式验证URL地址格式Jun 24, 2023 am 09:51 AM

随着互联网的快速发展,URL地址已经成为了人们日常生活中不可或缺的一部分。在web开发中,为了保证用户输入的URL地址可以正确地被系统识别和使用,我们需要对其进行格式验证。本文将介绍如何使用PHP正则表达式来验证URL地址格式。一、URL地址的基本组成部分在了解如何验证URL地址格式之前,我们首先需要了解URL地址的基本组成部分。通常,一个标准的URL地址由

如何在PHP中使用正则表达式验证是否是文件路径如何在PHP中使用正则表达式验证是否是文件路径Jun 24, 2023 am 10:18 AM

在PHP中,正则表达式是一种常用的字符串匹配和验证工具。在开发过程中,需要经常对输入的文件路径进行验证,确保其格式正确。本文将介绍如何使用正则表达式验证一个字符串是否是文件路径。首先,我们需要确定一个文件路径的基本格式。在Windows系统中,一个典型的文件路径是类似于“C:ProgramFilesPHPphp.exe”这样的格式。该路径分为以下几个部分:

如何用PHP正则表达式验证输入字符串是否为正确的身份证号码、护照号码或港澳通行证格式如何用PHP正则表达式验证输入字符串是否为正确的身份证号码、护照号码或港澳通行证格式Jun 24, 2023 am 10:36 AM

身份证、护照和港澳通行证号码都是重要的个人身份证明,为了保障个人信息安全,我们需要在系统中验证用户输入的证件号码是否符合规范格式。而PHP正则表达式是一个非常强大的工具,可以方便地实现这个目的。本文将介绍如何使用PHP正则表达式验证用户输入的身份证号码、护照号码和港澳通行证号码。一、身份证号码格式验证身份证号码是18位数字,在最后一位可能是数字或字母X。身份

如何使用PHP正则表达式验证特定长度的输入如何使用PHP正则表达式验证特定长度的输入Jun 24, 2023 am 10:17 AM

在开发Web应用程序时,经常需要验证用户输入是否符合特定的格式和长度要求。PHP正则表达式提供了一种强大的方法进行验证。本文将介绍如何使用PHP正则表达式验证特定长度的输入。确定输入的长度要求在开始编写正则表达式之前,需要确定输入的长度要求。例如,如果要求用户输入一个长度为8的密码,那么正则表达式应该匹配8个字符,而不是匹配大于等于8个字符的字符串。编写正则

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

メモ帳++7.3.1

メモ帳++7.3.1

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。