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 を返します;
}
=========================================== == =============================================== == =
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;
$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 "\"" はエラーを報告します
?
?
不適切または間違った言語表現がある場合は、修正してください。