2
3 4 5 $pattern = '/^abc/m' | $string ='で... s: このパターン修正記号を使用しない場合、「.」を改行文字として使用することはできません。文字列を 1 行として扱うには、「.」も改行文字として使用できます。 x: パターン内の空白スペースは無視されることに注意してください。
1 2 3 |
$pattern = '/a b c/x' $string ='abc' //マッチングが成功する理由は次のとおりです。加算の x 以降は a b c をそのまま abc とみなす | e: preg_replace 関数で正規表現を使用する必要があります A: 正規表現で始まる必要があります。これは、前に ^ を追加するのと同じです Z: 正規表現で終わる必要がありますこれは最後に $ を追加するのと同じです U: グリーディ モードをキャンセルします。または .*? グリーディ モードをキャンセルすることもできますが、両方を同時に使用すると逆の結果になります。ネガティブな効果とポジティブな効果が同時に現れ、Greedy モードが再びオンになります。 要約すると、正規表現の構成は /アトムとメタキャラクター/パターン修正記号であり、/ は区切り文字ですが、Python など一部の言語ではこの区切り文字が必要ありません。 5. メタキャラクターの優先順位(理解) 1) エスケープ文字が最上位 2) ()、(?:)、{ }、括弧は 2 番目 3) * + ? {} 4)^$ b 5)| 6. よく使用される正規表現 1) 数値を確認するための式 1 数値: ^[0-9]*$ 2 n を含む数値桁数: ^d{n}$ 3 n 桁以上の数値: ^d{n,}$ 4 m-n 桁の数値: ^d{m,n}$ 5 0 および 0 以外で始まる数値: ^(0|[1-9][0-9]*)$ 6 ゼロ以外で始まり小数点以下 2 桁までの数値: ^([1-9][0-9]*)+(。 [ 0-9]{1,2})?$ 7 小数点以下 1 ~ 2 桁の正または負の数: ^(-)?d+(.d{1,2})?$ 8 正の数、負の数、小数点: ^(-|+)?d+(.d+)?$ 9 小数点以下 2 桁の正の実数: ^[0-9]+(.[0-9]{2})?$ 10はい 小数点以下 1 ~ 3 桁の正の実数: ^[0-9]+(.[0-9]{1,3})?$ 11 ゼロ以外の正の整数: ^[1-9]d*$または ^ ([1-9][0-9]*){1,3}$ または ^+?[1-9][0-9]*$ 12 ゼロ以外の負の整数: ^-[1- 9] []0-9″*$ または ^-[1-9]d*$ 13 負でない整数: ^d+$ または ^[1-9]d*|0$ 14 正でない整数: ^-[1 -9]d*|0$ または ^((-d+)|(0+))$ 15 非負の浮動小数点数: ^d+(.d+)?$ または ^[1-9] d*.d*| 0.d*[1-9]d*|0?.0+|0$ 16 非正の浮動小数点数: ^((-d+(.d+)?)|(0+ (.0+)?)) $ または ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ 17 正浮動小数点数: ^[1-9 ]d*.d*|0.d*[1-9]d*$ または ^(([0-9]+.[0-9]*[1-9] [0-9]*)|( [0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0- 9]*))$ 18 負の浮動小数点数: ^-([1-9]d*.d*|0.d*[1-9]d*)$ または ^(-(([0-9 ]+.[0-9]*[ 1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|( [0-9]*[1-9 ][0-9]*)))$ 19 浮動小数点数: ^(-?d+)(.d+)?$ または ^-?([1-9]d *.d*|0.d*[1 -9]d*|0?.0+|0)$ 2) 文字表現をチェック 1 漢字: ^[u4e00-u9fa5]{0, }$ 2 英語と数字: ^ [A-Za-z0-9]+$ または ^[A-Za-z0-9]{4,40}$ 3 長さ 3 ~ 20 のすべての文字: ^.{ 3,20}$ 4 by 26 文字の英文字の文字列: ^[A-Za-z]+$ 5 26 文字の大文字の英文字の文字列: ^[A-Z]+$ 6 26 文字の小文字の英文字の文字列:^[a-z]+$ 7 数字と 26 個の英字で構成される文字列: ^[A-Za-z0-9]+$ 8 数字、26 個の英字またはアンダースコアで構成される文字列: ^ w+$ または ^ w{3,20}$ 9 中国語、英語、アンダースコアを含む数字: ^[u4E00-u9FA5A-Za-z0-9_]+$ 10 中国語、英語、数字(アンダースコアおよびその他の記号は含まない): ^ [u4E00- u9FA5A-Za-z0-9]+$ または ^[u4E00-u9FA5A-Za-z0-9]{2,20}$ 11 ^%&',;=?$" およびその他の文字を含む文字を入力できます。 [^%&',;=?$x22]+ 12 ~ を含む文字の入力は禁止されています: [^~x22]+ 3) 特別なニーズの表現
1 メールアドレス: ^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$ 2 ドメイン名: [a-zA-Z0-9 ] [-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 3インターネット URL :[a-zA-z]+://[^s]* または ^http://([w-]+.)+[w-]+(/[w-./?%&=] * )?$ 4 携帯電話番号: ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0 |1 |2|3|5|6|7|8|9])d{8}$ 5 電話番号 ("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX") "、"XXXXXXX"、および "XXXXXXXX): ^((d{3,4}-)|d{3.4}-)?d{7,8}$ 6 国内電話番号 (0511-4405222、021-87888822) : d {3}-d{8}|d{4}-d{7} 7 ID 番号 (15 桁、18 桁): ^d{15}|d{18}$ 8 短い ID 番号 (数字、x で終わる文字): ^([0-9]){7,18}(x|X)?$ または ^d{8,18}|[0-9x]{8,18}|[0- 9X]{8,18}?$ 9 アカウントは合法ですか (文字で始まり、5 ~ 16 バイトが使用可能、英数字のアンダースコアが使用可能): ^[a-zA-Z][a-zA-Z0-9_]{ 4 ,15}$ 10 パスワード (文字で始まり、長さは 6 ~ 18 で、文字、数字、アンダースコアのみを使用できます): ^[a-zA-Z]w{5,17}$ 11 強力パスワード (大文字、小文字、数字の組み合わせを含める必要があります。特殊文字は使用できません。長さは 8 ~ 10 です): ^(?=.*d)(?=.*[a-z])(?= .*[A-Z]) .{8,10}$ 12 日付形式: ^d{4}-d{1,2}-d{1,2} 13 年間 12 か月 (01~09 および 1) ~12): ^ (0?[1-9]|1[0-2])$ 14 月の 31 日 (01~09 および 1~31): ^((0?[1-9]) |((1| 2)[0-9])|30|31)$ 15 お金の入力形式: 16 1. 受け入れられるお金の表現は 4 つあります:「10000.00」と「10,000.00」、「セントなし」 " "10000" と "10,000": ^[1-9][0-9]*$ 17 2. これは 0 で始まらない任意の数値を意味しますが、文字 "0" は通過しないことも意味します, したがって、次の形式を使用します: ^(0|[1-9][0-9]*)$ 18 3. 0、または 0 で始まらない数値。 begin: ^ (0|-?[1-9][0-9]*)$ 19 4. これは、0 または負の可能性があり、0 で始まらない数値を意味します。ユーザーに 0 から始めてもらいます。マイナス記号を付けます。また、お金をマイナスにすることはできないので、それを削除します。以下に追加する必要があるのは、可能な小数部分を説明することです: ^[0-9]+(.[0-9]+)?$ 20 5. 説明する必要があること はい、小数点の後に少なくとも 1 桁が必要であるため、「10.」は渡されませんが、「10」と「10.2」は渡されます: ^[0-9]+(.[ 0-9]{2} )?$ 21 6. このように、小数点以下 2 桁でなければならないと規定していますが、厳しすぎると思われる場合は、次のようにすることもできます。 ]+(.[0-9]{1,2})?$ 22 7. これにより、ユーザーは小数点以下 1 桁だけを書き込むことができます。次に、数値内のカンマを考慮する必要があります。次のようにします。 -9]{1,3}(,[0-9]{3})* (.[0-9]{1,2})?$ 23 8.1 ~ 3 個の数値とその後に任意の数のカンマ + 3 が続きます数値の場合、カンマは必須ではなくオプションになります: ^([0-9]+ |[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{ 1,2})?$ 24 注: これは最終結果です。空の文字列が受け入れられると思われる場合は、「+」を「*」に置き換えることができることを忘れないでください (奇妙です、なぜですか?) 最後に、関数を使用するときにバックスラッシュを削除することを忘れないでください。よくある間違いは次のとおりです 25 xml ファイル: ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X] [m|M][l|L]$ 26 漢字 正規表現: [u4e00-u9fa5] 27 全角文字: [^x00-xff] (漢字を含む)文字列(全角文字は2、ASCII文字は1と数えます)) 28 空白行の正規表現: ns*r (空白行の削除に使用可能) 29 HTMLタグの正規表現: < ;(S*?)[^>]*>? 1>|<.* /> (インターネット上で流通しているバージョンは部分的にしか有効ではありません)複雑なネストされたタグにはまだ無力です) 30 先頭および末尾の空白文字の正規表現: ^s *|s*$ または (^s*)|(s*$) (空白文字を削除するために使用できます)行頭と行末 (スペース、タブ、フォーム フィードなどを含む)、非常に便利な式) 31 Tencent QQ 番号: [1-9][0-9]{4,} (Tencent QQ 番号は 10000 から始まります) ) 32 中国の郵便番号: [1-9]d{5}(?!d) (中国の郵便番号は 6 桁です) 33 IP アドレス: d+.d+.d+.d+ (IP アドレスを抽出するときに便利です) PHP 正規表現処理関数 1. int preg_match ( string pattern, string subject [, arraymatches [, int flags]] ) 使用法: 1) pattern で指定された正規表現に一致するコンテンツを対象の文字列で検索します。 。 2) 一致するものが提供された場合は、検索結果が表示されます。 $matches[0] にはパターン全体に一致するテキストが含まれ、$matches[1] には括弧内の最初にキャプチャされたサブパターンに一致するテキストが含まれます。 3) flags パラメータは PHP 4.3.0 以降で使用できます。 flags には次のタグを使用できます: PREG_OFFSET_CAPTURE このタグが設定されている場合、各一致結果に関連付けられた文字列オフセットも返されます。これにより、返される配列の値が変更され、配列内の各セルも配列になります。最初の項目は一致した文字列で、2 番目の項目はそのオフセットになります。 たとえば、次の例は URL に一致します
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
$str="これは通常のテーブル https://www.baidu.com 式マッチング関数"; $url="/(https?|ftps?)://((www|mail|news).([^ ./ ]+).(com|org|net))/i"; if(preg_match($url, $str, $arr)){ echo "文字列 "; }else{ echo "文字列に URL は含まれていません"; } 2. int preg_match_all ( string pattern, string subject [, arraymatches [, int flags]] ) は preg_match_all とまったく同じですが、すべての情報に一致します。 たとえば、次の例は、正規表現
1 2 3 4 に一致するすべてのコンテンツと一致します。 5 6 7 8 9 10 11 12 13 14 15 16 17 1 8 19 20 21 22 23 |
$str="これは、通常のテーブルの式のマッチング関数です https://www.baidu.com これは、通常のテーブルの式のマッチング関数です http://www.baidu1.com これは正規表現テーブル https://mail.baidu2.com 式マッチング関数 これは通常のテーブル https://news.baidu3.com 式マッチング関数 これは通常のテーブル https://www.baidu4 です。 org 式マッチング関数 これは通常のテーブルです https://www.baidu5.net 式マッチング関数 これは通常のテーブル ftps://www.baidu6.com 式マッチング関数 これは次のマッチング関数です通常のテーブル ftp://www.google7.com 式 これは通常のテーブル https://www.baidu7.net 式 "; $url= "/(https?|ftps ?)://((www|mail|news).([^./]+).(com|org|net))/i"; if(preg_match_all( $url, $str, $ arr)){ echo "この文字列には正しい URL 情報が含まれています " print_r($arr); echo "ホスト: ".$arr[2]." "; }else{ echo "この文字列には URL が含まれません"; 上記の $arr の出力結果は、次々にマッチングした結果を分割していません。つまり、すべてのサブパターンが配列に書き込まれ、結果が別の配列に分割されていません。 結果では、0 番目の配列にはすべての完全なパターンが含まれ、最初の配列には最初のすべてのサブパターンが含まれます。 上記のコードを変更して、結果を個別に表示することができます。 1 2 3 4 5 6 7 8 9 10 11 | if(preg_match_all ($url, $str, $arr,PREG_SET_ORDER)){ echo "文字列には正しい URL 情報があります "; echo ' '; ' '; echo "ホスト: ".$arr[2]." "; }else{ echo "この文字列には URL が含まれません";上記の preg_match_all メソッドでは、4 番目のパラメーターが PREG_SET_ORDER に渡され、完全なパターンとサブパターンのそれぞれを個別に表示します。 実際、デフォルト モードのパラメータは PREG_PATTERN_ORDER です。このパラメータを渡すことは、パラメータを渡さないことと同じです。 3.mixed preg_replace(mixed pattern,mixed replace,mixed subject [,int limit]) Replacement関数、patternは正規表現、replacementは置換される内容、つまり一致する内容と一致します。正規表現 Replacement は置換、件名は検索文字列です。つまり、この文字列の内容が置き換えられます。 | 1 2 3 4
5
$str=" 文字列内の PHP 置換関数、システムによって提供される文字列内の置換関数、置換システムが提供する文字列の関数、システムが提供する文字列の置換関数、システムが提供するランプ文字列の置換関数、システムが提供する文字列の置換関数 php"; echo $str." "; echo preg_replace("/[a-zA-z]+/",'',$str); このプログラムを実行すると、str 文字列内の文字は何も置き換えられません。 さらに、4 番目のパラメータである置換の数を指定できます
1 2 3 4 5 |
$str= " 文字 php の文字列内の置換関数、システムが提供する文字列の置換関数、システムが提供する文字列の置換関数、システムが提供する文字列の置換関数、文字内の置換関数システムが提供する文字列、システム php が提供する文字列の置換関数"; echo $str." "; echo preg_replace("/[a-zA-z]+/ ",",$ str,3); | このようにして実現できる置換は 3 つだけです。 さらに、
1 2 3 4 などの、より一般的な方法である多対多の配列置換を実装することもできます。 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$str=" php の文字列内の置換関数、システムが提供する文字列の置換関数、システムが提供する文字列の置換関数、システムが提供する文字列の置換関数、システムが提供する文字列の置換関数、[b] システム PHP が提供する文字列の置換関数 [/b]、システム PHP が提供する文字列の置換関数、提供される文字列の置換関数システムによって提供される文字列 apache の置換関数、システムによって提供される [u]mysql 文字列の置換関数[/u]、システムが提供する文字列 Apache、システム php システムが提供する文字列の [i] 置換関数 [/i]、システムが提供する [size=7] 文字列の php 置換関数 [/size]、および[color=Magenta] システムによって提供される Linux 文字列 [/color] mysql 関数、システムによって提供される文字列の置換関数、PHP によって提供される文字列の置換関数、システムによって提供される文字列の置換関数、によって提供される文字列の置換関数システム PHP、システムが提供する単語 [align=center] ] 文字列 [b] システムが提供する文字列内の置換関数 [/align] php [/b]、システム [b] システムが提供する文字列内php [/b] システムによって提供される文字列内 php システムによって提供される置換関数 "; echo $str." "; $ubbcodes=array( '/ [b](.*?)[/b]/i ', '/[u](.*?)[/u]/i', '/[i](.*?)[/ i]/i', '/[color=( .*?)](.*?)[/color]/', '/[size=(.*?)](.*?)[ /size]/', '/[align=( .*?)](.*?)[/align]/' $htmls=array( ' 1'、 ' 1'、 '1'、 '2< /font>'、 '2'、 '2 ' ); echo preg_replace($ubbcodes,$htmls,$str) ; 上記は角括弧タグを HTML タグに変換するために使用できます。 正規表現関数に関しては、基本的にはこれら 3 つをマスターすれば十分です。その他には、PHP の文字列を使用して直接分割できる正規表現分割関数があります。ここでは説明しません。 この記事の概要 この記事では、PHP の正規表現の関連構文と正規表現一致関数を紹介します。上記はすべて、PHP の正規表現に関連する内容です。
|
|
|
|
|