PHP正则表达式应用笔记

Jun 13, 2016 am 11:02 AM
pattern windows

PHP正则表达式使用笔记

?

PHP正则表达式使用详解

操作符 描述
??? \
转义符
??? (), (?:), (?=), []
圆括号和方括号

??? *, +, ?, {n}, {n,}, {n,m} 限定符
??? ^, $, \anymetacharacter
位置和顺序
??? | “
操作
???
全部符号解释
???
字符 描述
??? \
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"'\n' 匹配一个换行符。序列 '\\' 匹配 "\" "\(" 则匹配 "("

??? ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' '\r' 之后的位置。

??? $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' '\r' 之前的位置。

??? * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"* 等价于{0,}

??? + 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"+ 等价于 {1,}

??? ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" "does" 中的"do" ? 等价于 {0,1}

??? {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o

??? {n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o'o{1,}' 等价于 'o+''o{0,}' 则等价于 'o*'

??? {n,m} m n 均为非负整数,其中n 。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

??? ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo"'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'

??? . 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。

??? (pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' '\)'

??? (?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

??? (?=pattern) 正向预查,在任何匹配 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 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'

??? \B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 '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

??? \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]

??? \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]

??? \t 匹配一个制表符。等价于 \x09 \cI

??? \v 匹配一个垂直制表符。等价于 \x0b \cK

??? \w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'

??? \W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'

??? \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
??? \num
匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。

??? \n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

??? \nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm

??? \nml 如果 n 为八进制数字 (0-3),且 m l 均为八进制数字 (0-7),则匹配八进制转义值 nml

??? \un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)

??? VBScript内的使用正则表达式的方法:

??? function gfCheck(obj)

??? dim strCheck '待检字符串
??? dim objRE '
正则式对象
??? dim strRtn '
正则式判断结果
??? strCheck = obj.value
??? set objRE = New RegExp
??? objRE.Pattern = "^[A-Za-z0-9]{13}$" '13
位的英文字符和数字串
??? gfCheck = objRE.Test(strCheck) '
符合正则式则返回true,反之则返回false
??? set objRE = nothing
??? end function
???
常用的正则表达式
??? 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+$”

??? 15E-mail地址”^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”

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

????17、空白行:\n\s*\r

?

一:匹配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}|'
??? ??? ??? ??? ??? ??? ??? ??? .'[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})\/((([13578]|1[2])|(0[13578]|1[02])'
??? ??? ??? ??? ??? ??? ??? ??? .'\/((0[1-9]|[12][0-9]|3[01])|([1-9]|[12][0-9]|3[1])))|(((0[469]|11)|([469]|11))'
??? ??? ??? ??? ??? ??? ??? ??? .'\/((0[1-9]|[12][0-9]|30)|([1-9]|[12][0-9]|30)))|'
??? ??? ??? ??? ??? ??? ??? ??? .'((02|2)\/((0[1-9]|[1][0-9]|2[0-8])|([1-9]|[1][0-9]|2[0-8]))'
??? ??? ??? ??? ??? ??? ??? ??? .')))|((([0-9]{2})((0[48]|[2468][048]|[13579][26])|([48]|[2468][048]|[13579][26]))|'
??? ??? ??? ??? ??? ??? ??? ??? .'((((0[48])|([48]))|[2468][048]|[3579][26])00))\/(02|2)\/29)$/';

?

3.验证全角

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

$input = “全角

if(preg_match($strCheckPatten,$input) == 0){
??? ??? return false;
}
else{
??? ??? return true;
}

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

  1. JS中匹配中文正则表达式 [\u4e00-\u9fa5]
  2. JS中域名中间部分var patt = /^[a-zA-Z0-9\u4e00-\u9fa5]+(\-[a-zA-Z0-9\u4e00-\u9fa5]+)*$/i;

    url : var patt = /^([a-zA-z]+:\/\/)?([a-zA-Z0-9\u4e00-\u9fa5]+(\-[a-zA-Z0-9\u4e00-\u9fa5]+)*)(\.([a-zA-Z0-9\u4e00-\u9fa5]+(\-[a-zA-Z0-9\u4e00-\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”; 输出 "\n";?? echo "\\""会报错

      ?

      ?

      如有语言表达不当或错误之处,欢迎指正。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Windows システム DLL ファイルを削除できない場合はどうすればよいですか? 頑固な DLL ファイルを完全に削除するためのヒント Windows システム DLL ファイルを削除できない場合はどうすればよいですか? 頑固な DLL ファイルを完全に削除するためのヒント Jun 12, 2024 pm 02:46 PM

一部の頑固なソフトウェアでは、アンインストール後に残りの dll ファイルが残り、この dll ファイルの一部はプロセスにバインドされ (通常、expore.exe プロセスにバインドされやすくなります)、コンピュータの電源を入れると起動します。ファイルを削除するときに、プログラムが占有されている (またはサービスが実行中であるなど) というメッセージが表示されます。 方法 1: 1. win+r キーを押した後、インターフェイスが表示され、「regedit」と入力します。スクリーンショットは次のとおりです: 2. Enter キーを押すと、レジストリ エディタが表示されます。スクリーンショットは次のとおりです: 3. この時点で、[マイ コンピュータ] で [HKEY_LOCAL_MACHINE] ファイルを見つけ、クリックします。展開--ソフトウェア

Steam Deck OLED のロスレス スケーリングにより、最大 2x FPS でゲームを実行 Steam Deck OLED のロスレス スケーリングにより、最大 2x FPS でゲームを実行 Aug 26, 2024 am 10:07 AM

ETA Primeは最近、ROG Ally XのLossless Scalingと呼ばれる有料ソフトウェアを紹介しました。これは実際のゲームパフォーマンスを実際に向上させるわけではありませんが、このソフトウェアはフレーム生成と解像度スケーリングを追加することでエクスペリエンスを向上させます。この二つができるのは、

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Feb 19, 2025 pm 04:54 PM

DeepSeekは、Webバージョンと公式Webサイトの2つのアクセス方法を提供する強力なインテリジェント検索および分析ツールです。 Webバージョンは便利で効率的であり、公式ウェブサイトは包括的な製品情報、ダウンロードリソース、サポートサービスを提供できます。個人であろうと企業ユーザーであろうと、DeepSeekを通じて大規模なデータを簡単に取得および分析して、仕事の効率を向上させ、意思決定を支援し、イノベーションを促進することができます。

Bybit Exchangeの最新バージョンを更新する方法は?更新されていない場合、影響はありますか? Bybit Exchangeの最新バージョンを更新する方法は?更新されていない場合、影響はありますか? Feb 21, 2025 pm 10:54 PM

Bybit取引所の更新方法は、プラットフォームとデバイスによって異なります。モバイル:更新を確認し、App Storeにインストールします。デスクトップクライアント:ヘルプメニューの更新を確認し、自動的にインストールします。 Webページ:更新のために公式Webサイトに手動でアクセスする必要があります。交換の更新に失敗すると、セキュリティの脆弱性、機能的な制限、互換性の問題、およびトランザクション実行効率の低下につながる可能性があります。

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

Snapdragon X Elite CPU のパフォーマンスは、バッテリーとプラグインされた Vivobook S15 ベンチマークでほぼ同等 Snapdragon X Elite CPU のパフォーマンスは、バッテリーとプラグインされた Vivobook S15 ベンチマークでほぼ同等 Jun 20, 2024 pm 03:59 PM

Qualcomm Snapdragon X Eliteを取り巻く誇大宣伝にもかかわらず、それはかなり平凡な発売でした。私たちのレビューでは、新しいQualcomm Snapdragon X Elite X1E-78-100を搭載したAsus Vivobook S 15の最も印象的な部分はシームレスであることがわかりました。

Vivobook S15 ベンチマークでは、Snapdragon X Elite CPU パフォーマンスがバッテリーと AC 電源でほぼ同等 Vivobook S15 ベンチマークでは、Snapdragon X Elite CPU パフォーマンスがバッテリーと AC 電源でほぼ同等 Jun 21, 2024 am 06:50 AM

Qualcomm Snapdragon X Eliteを取り巻く誇大宣伝にもかかわらず、それはかなり平凡な発売でした。私たちのレビューでは、新しいQualcomm Snapdragon X Elite X1E-78-100を搭載したAsus Vivobook S 15の最も印象的な部分はシームレスであることがわかりました。

See all articles