ホームページ > バックエンド開発 > PHPチュートリアル > PHP 正規表現アプリケーション ノート

PHP 正規表現アプリケーション ノート

WBOY
リリース: 2016-06-13 13:03:18
オリジナル
800 人が閲覧しました

PHP 正規表現の使用上の注意

?

PHP 正規表現の使い方の詳しい説明

オペレーター 説明
???
エスケープ文字
??? ()、(?:)、(?=)、[]
括弧と角括弧

??? *、+、?、{n}、{n,}、{n,m} 予選
??? ^、$、任意のメタ文字
位置と順序
??? | 「
または オペレーション
???
すべての記号の説明
???
キャラクター 説明
???
は、次の文字を特殊文字、リテラル文字、または としてマークします。 後方参照、または 8 進数のエスケープ文字。たとえば、 「ん」 キャラクターに一致 「ん」 「ん」 は改行文字と一致します。シーケンス '\' 一致 "" "(" と一致します "("

???^ 入力文字列の先頭と一致します。 が設定されている場合 正規表現 オブジェクト 複数行 プロパティ、 ^ こちらも一致します 'n' または 'r' の後の位置。

???$ 入力文字列の終了位置と一致します。 が設定されている場合 正規表現 オブジェクト 複数行 プロパティ、 $ こちらも一致します 'n' または 'r' 前の場所。

??? * 直前の部分式と 0 回以上一致します。たとえば、 ぞ* 一致する可能性があります 「ズ」 「動物園」 * と同等です {0,}

???+ 直前の部分式と 1 回以上一致します。たとえば、 「zo+」 一致する可能性があります 「ぞ」 「動物園」 ですが、 とは一致しません 「ズ」 + と同等です {1,}

? 直前の部分式と 0 回または 1 回一致します。たとえば、 「しますか?一致する可能性があります 「する」 または 「する」 「する」 ? と同等です {0,1}

??? {n} n は負ではない整数です。確かに一致します 回。たとえば、 'o{2}' 一致しません 「ボブ」 'o' ただし、 と一致する可能性があります 「食べ物」 の 2 つ

??? {n,} n は負ではない整数です。少なくとも と一致します n 回。たとえば、 'o{2,}' 一致しません 「ボブ」 'o' ただし、 と一致する可能性があります 「すごい」 内のすべての 'o{1,}' と同等です 'o+' 'o{0,}' と同等です 'o*'

??? {n,m} m はすべて負ではない整数です。 n 。最小一致 回、最大で と一致しました 回。たとえば、 「お{1,3}」 と一致します 「すごい」 の最初の 3 つの 'o{0,1}' と同等です 「え?」 。カンマと 2 つの数字の間にスペースを入れることはできないことに注意してください。

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

??? 以外の一致 「ん」 を除く任意の 1 文字。一致するには を含めます 'n' を含む文字はのように使用してください '[.n]' モード。

???(パターン) 一致 パターン そしてこの試合を手に入れましょう。取得した一致は から生成できます。 一致 で集めて手に入れましょう VBScript を使用します サブマッチ に集合 JScript を使用します $0…$9 プロパティ。括弧文字と一致させるには、 を使用します。 '(' または ')'

??? (?:パターン) 一致 パターン しかし、マッチング結果が得られないため、非取得マッチングとなり、は実行されません。 ストレージ 将来の使用のために。これは を使用しています " または " キャラクター (|) パターンの一部を組み合わせるのに便利です。たとえば、 'industr(?:y|ies) あくまで比較です '業界|業界' よりシンプルな表現。

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

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

???x|y 一致 × または 。たとえば、 'z|食べ物' 一致する可能性があります 「ズ」 または 「食べ物」 '(z|f)ood' と一致します 「動物園」 または 「食べ物」

???[xyz] キャラクターコレクション。含まれている文字のいずれかと一致します。たとえば、 '[abc]' 一致する可能性があります 「プレーン」 「あ」

???[^xyz] 負の値の文字のコレクション。含まれていない任意の文字と一致します。たとえば、 '[^abc]' 一致する可能性があります 「プレーン」 「ぷっ」

???[a-z] 文字範囲。指定された範囲内の任意の文字と一致します。たとえば、 '[a-z]' 一致する可能性があります 「あ」 'z' の範囲内の任意の小文字の英字。

???[^a-z] 負の文字範囲。指定された範囲内にない任意の文字と一致します。たとえば、 '[^a-z]' 以外のものと一致します 「あ」 'z' の範囲内の任意の文字。

??? b 単語とスペースの間の位置を指す単語境界に一致します。たとえば、 「アーブ」 一致する可能性があります 「決して」 「えー」 ですが、 とは一致しません 「動詞」 「えー」

???B 単語以外の境界と一致します。 'erB' 一致する可能性があります 「動詞」 「えー」 ですが、 とは一致しません 「決して」 「えー」

???cx によって一致します × で指定された制御文字。たとえば、 cm 1 つと一致します Control-M または復帰文字。 x の値は である必要があります A ~ Z または a-z 1 つ。それ以外の場合は c リテラル として扱われます 'c' キャラクター。

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

???D 数字以外の文字と一致します。 に相当 [^0-9]

???f はフォーム フィードに一致します。 に相当 x0c cL

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

???r は復帰文字と一致します。 に相当 x0d cm

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

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

???t はタブ文字と一致します。 に相当 x09 cI

???v 垂直タブ文字と一致します。 に相当 x0b CK

???w アンダースコアを含む任意の単語文字と一致します。 に相当 '[A-Za-z0-9_]'

???W 単語以外の文字と一致します。 に相当 '[^A-Za-z0-9_]'

???xn 一致 、ここで は 16 進数のエスケープ値です。 16 進数のエスケープ値は、正確に 2 桁の長さである必要があります。たとえば、 'x41' 一致 「あ」 'x041' と同等です 'x04' & "1" 。正規表現では を使用できます アスキー エンコーディング。 .
???番号
一致 番号 、ここで 番号 は正の整数です。取得した一致への参照。たとえば、 '(.)1' 連続する 2 つの同一の文字と一致します。

???n 8 進エスケープ値または後方参照を識別します。 の場合 少なくとも以前 で部分式を取得し、次に は後方参照です。それ以外の場合、 は 8 進数です (0-7) 、次に は 8 進数のエスケープ値です。

???んん 8 進エスケープ値または後方参照を識別します。 の場合 んん 以前には少なくとも がありました んん は部分式を取得し、次に んん は後方参照です。 の場合 んん 以前には少なくとも がありました を取得し、次に の後には というテキストが続きます の後方参照。前述の条件がいずれも満たされない場合、 すべて 8 進数です (0-7) 、次に んん 8 進エスケープ値と一致します んん

???nml 場合 は 8 進数です (0-3) 、および l すべて 8 進数です (0-7) 、8 進エスケープ値 と一致します。 nml

???アン 一致 、ここで は 4 桁の 16 進数で表される です ユニコード キャラクター。たとえば、 u00A9 著作権記号と一致します (?)

???VBScript 内で正規表現を使用する方法:

???関数 gfCheck(obj)

??? dim strCheck ' チェックする文字列
??? 薄暗いオブジェクト '
正規表現オブジェクト
??? 薄暗い strRtn '
正規表現の判定結果
??? strCheck = obj.value
??? set objRE = 新しい正規表現
??? objRE.Pattern = "^[A-Za-z0-9]{13}$" '13
英語の文字と数字の数字列
??? gfCheck = objRE.Test(strCheck) '
が正規表現に一致する場合、 を返します。 本当 、そうでない場合は を返します
???objRE = 何も設定しない
??? 関数を終了します
???
一般的に使用される正規表現
???1
、負でない整数: ”^d+$”

???2 、正の整数: ”^[0-9]*[1-9][0-9]*$”

???3 、正でない整数: ”^((-d+)|(0+))$”

???4 、負の整数: ”^-[0-9]*[1-9][0-9]*$”

???5 、整数: ”^-?d+$”

???6 、非負の浮動小数点数: ”^d+(.d+)?$”

???7 、正の浮動小数点数: ”^((0-9)+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]* .[0-9]+)|([0-9]*[1-9][0-9]*))$”

???8 、非正の浮動小数点数: ”^((-d+.d+)?)|(0+(.0+)?))$”

???9 、負の浮動小数点数: "^(-((( 正の浮動小数点数正規表現 )))$”

??? 10 、英語の文字列 ”^[A-Za-z]+$”

???11 、英語の大文字文字列 ”^[A-Z]+$”

???12 、英語の小文字文字列 ”^[a-z]+$”

???13 、英文字と数字の文字列 ”^[A-Za-z0-9]+$”

???14 、英数字と下線付きの文字列 ”^w+$”

???15 電子メール 住所 ”^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$”

??? 16 URL ”^[a-zA-Z]+://(w+(-w+)*)(.(w+(-w+)*))*(?s*)?$”

????17. 空白行: ns*r

?

1: 一致YYYY-MM-DD (([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9 ][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12] [0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[ 1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]| [13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)

2 : DD/MM/YYYY に一致します または D/M/YYYY と一致します

'/^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|'
??? ??? ??? |[1 -9][0-9]{3})/((([13578]|1[2])|(0[13578]|1[02])'
??? ??? ??? ??? 01]) |([1-9]|[12][0-9]|3[1])))|(((0[469]|11)|([469]|11))'
??? ??? ??? .'/(0[12][0-9]) |([ 1-9]|[12][0-9]|30)))|'
??? ??? ??? .'(0[1-9] -9] |2[0-8])|([1-9]|[1][0-9]|2[0-8]))'
??? ??? ??? .'))|(([0-9] ]|[ 2468][048]|[13579][26])|([48]|[2468][048]|[13579][26]))|'
??? ??? ??? .'((([48])) 048]| [3579][26])00))/(02|2)/29)$/';

?

3. 全幅を確認

$strCheckPatten = “/^[^x00-xff]+$/” ;

$input = “ 全角 ;

if(preg_match($strCheckPatten,$input) == 0){
??? 戻り値 false;
}
それ以外{
??? ??? true を返します;
}

=========================================== == =============================================== == =

  1. JS での中国語の正規表現のマッチング [u4e00-u9fa5]
  2. JS のドメイン名の中間部分 var patt = /^[a-zA-Z0-9u4e00-u9fa5]+(-[a-zA-Z0-9u4e00-u9fa5]+)*$/i;

    url : var patt = /^([a-zA-z]+://)?([a-zA-Z0-9u4e00-u9fa5]+(-[a-zA-Z0-9u4e00-u9fa5]+)*)(.([ a-zA-Z0-9u4e00-u9fa5]+(-[a-zA-Z0-9u4e00-u9fa5]+)*))*(?S*)?$/i;

    1. PHP の UTF-8 エンコーディングで正規表現を使用して中国語の文字と一致する最終的な正しい表現 -/^[x{4e00}-x{9fa5}]+$/u
    2. PHP の GB2312 エンコーディングで中国語の文字と一致する正規表現を使用した最終的な正しい表現 -
      ? "/^[".chr(0xa1)."-".chr(0xff)."]+$/"または"/^[xa1-xff]+$/"または"/^[ x{a1}-x{ff}]+$/" ?
    3. PHP の GB2312 に一致する URL

      $pattern =? ."/^([a-zA-z]+://)?"
      ???????."([a-zA-Z0-9".chr(0xa1)."-".chr(0xff)."]+(-[a-zA-Z0-9".chr(0xa1) )."-".chr(0xff)."]+)*)"
      ???????."(.([a-zA-Z0-9".chr(0xa1)."-".chr(0xff)."]+(-[a-zA-Z0-9".chr (0xa1)."-".chr(0xff)."]+)*))*"
      ???????."(?S*)?$/i";

      ? 4.正規表現の文字列または PHP の通常の "" は左から右にエスケープされます

      例: echo "\n"; Output "n";?? echo "\"" はエラーを報告します

      ?

      ?

      不適切または間違った言語表現がある場合は、修正してください。

関連ラベル:
ソース:php.cn
前の記事:PHP は GET を使用して漢字のエンコード変換を送信します 次の記事:PHP フレームワーク queryphp コース: 入門 11 パーミッション システムの設計
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート