搜索
首页后端开发php教程PHP正则表达式应用笔记

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
您如何修改PHP会话中存储的数据?您如何修改PHP会话中存储的数据?Apr 27, 2025 am 12:23 AM

tomodifyDataNaphPsession,startTheSessionWithSession_start(),然后使用$ _sessionToset,修改,orremovevariables.1)startThesession.2)setthesession.2)使用$ _session.3)setormodifysessessvariables.3)emovervariableswithunset()

举一个在PHP会话中存储数组的示例。举一个在PHP会话中存储数组的示例。Apr 27, 2025 am 12:20 AM

在PHP会话中可以存储数组。1.启动会话,使用session_start()。2.创建数组并存储在$_SESSION中。3.通过$_SESSION检索数组。4.优化会话数据以提升性能。

垃圾收集如何用于PHP会议?垃圾收集如何用于PHP会议?Apr 27, 2025 am 12:19 AM

PHP会话垃圾回收通过概率机制触发,清理过期会话数据。1)配置文件中设置触发概率和会话生命周期;2)可使用cron任务优化高负载应用;3)需平衡垃圾回收频率与性能,避免数据丢失。

如何在PHP中跟踪会话活动?如何在PHP中跟踪会话活动?Apr 27, 2025 am 12:10 AM

PHP中追踪用户会话活动通过会话管理实现。1)使用session_start()启动会话。2)通过$_SESSION数组存储和访问数据。3)调用session_destroy()结束会话。会话追踪用于用户行为分析、安全监控和性能优化。

如何使用数据库存储PHP会话数据?如何使用数据库存储PHP会话数据?Apr 27, 2025 am 12:02 AM

利用数据库存储PHP会话数据可以提高性能和可扩展性。1)配置MySQL存储会话数据:在php.ini或PHP代码中设置会话处理器。2)实现自定义会话处理器:定义open、close、read、write等函数与数据库交互。3)优化和最佳实践:使用索引、缓存、数据压缩和分布式存储来提升性能。

简单地说明PHP会话的概念。简单地说明PHP会话的概念。Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInacookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionwwithSession_start()和stordoredAtain $ _session.2)

您如何循环中存储在PHP会话中的所有值?您如何循环中存储在PHP会话中的所有值?Apr 26, 2025 am 12:06 AM

在PHP中,遍历会话数据可以通过以下步骤实现:1.使用session_start()启动会话。2.通过foreach循环遍历$_SESSION数组中的所有键值对。3.处理复杂数据结构时,使用is_array()或is_object()函数,并用print_r()输出详细信息。4.优化遍历时,可采用分页处理,避免一次性处理大量数据。这将帮助你在实际项目中更有效地管理和使用PHP会话数据。

说明如何使用会话进行用户身份验证。说明如何使用会话进行用户身份验证。Apr 26, 2025 am 12:04 AM

会话通过服务器端的状态管理机制实现用户认证。1)会话创建并生成唯一ID,2)ID通过cookies传递,3)服务器存储并通过ID访问会话数据,4)实现用户认证和状态管理,提升应用安全性和用户体验。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具