php正则(php正则表达式匹配邮箱,手机号码)

这篇文章给大家聊聊关于php正则,以及php正则表达式匹配邮箱,手机号码对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

在PHP编程中,正则表达式是一个非常强大的工具,它可以用于字符串的匹配、替换、分割等操作。今天,我们就来深入浅出地探讨一下PHP正则表达式的相关知识,帮助大家更好地掌握这一技能。

一、什么是正则表达式?

正则表达式(Regular Expression,简称Regex)是一种用于处理字符串的强大工具,它可以用来描述、匹配特定的字符串模式。在PHP中,正则表达式主要用于字符串的匹配、替换、分割等操作。

二、PHP正则表达式的基本语法

PHP正则表达式的基本语法如下:

“`php

preg_match(“

PHP中提取字符串–正则

PHP中的正则式使用

PHP被大量的应用于Web的后台CGI开发,通常是在用户数据数据之后得出某种结果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是”2月30日”!那应该怎么样来检验暑假是否正确呢?在PHP中加入了正则表达式的支持,让我们可以十分方便的进行数据匹配。

2什么是正则表达式:

简单的说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基于UNIX/LINUX系统的软件工具中找到正则表达式的痕迹,例如:Perl或PHP脚本语言。此外,JavaScript这种客户端的脚本语言也提供了对正则表达式的支持,现在正则表达式已经成为了一个通用的概念和工具,被各类技术人员所广泛使用。

在某个Linux网站上面有这样的话:”如果你问一下Linux爱好者最喜欢什么,他可能会回答正则表达式;如果你问他最害怕什么,除了繁琐的安装配置外他肯定会说正则表达式。”

正如上面说的,正则表达式看起来非常复杂,让人害怕,大多数的PHP初学者都会跳过这里,继续下面的学习,但是PHP中的正则表达式有着可以利用模式匹配找到符合条件的字符串、判断字符串是否合乎条件或者用指定的字符串来替代符合条件的字符串等强大的功能,不学实在太可惜了……

3正则表达式的基本语法:

一个正则表达式,分为三个部分:分隔符,表达式和修饰符。

分隔符可以是除了特殊字符以外的任何字符(比如”/!”等等),常用的分隔符是”/”。表达式由一些特殊字符(特殊字符详见下面)和非特殊的字符串组成,比如”[a-z0-9_-]+@[a-z0-9_-.]+”可以匹配一个简单的电子邮件字符串。修饰符是用来开启或者关闭某种功能/模式。下面就是一个完整的正则表达式的例子:

/hello.+?hello/is

上面的正则表达式”/”就是分隔符,两个”/”之间的就是表达式,第二个”/”后面的字符串”is”就是修饰符。

在表达式中如果含有分隔符,那么就需要使用转义符号””,比如”/hello.+?/hello/is”。转义符号除了用于分隔符外还可以执行特殊字符,全部由字母构成的特殊字符都需要””来转义,比如”d”代表全体数字。

4正则表达式的特殊字符:

正则表达式中的特殊字符分为元字符、定位字符等等。

元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前面的字符)在被匹配的对象中出现的方式。元字符本身是一个个单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。

元字符:

大括号:大括号用来精确指定匹配元字符出现的次数,例如”/pre{1,5}/”表示匹配的对象可以是”pre”、”pree”、”preeeee”这样在”pr”后面出现1个到5个”e”的字符串。或者”/pre{,5}/”代表pre出现0此到5次之间。

加号:”+”字符用来匹配元字符前的字符出现一次或者多次。例如”/ac+/”表示被匹配的对象可以是”act”、”account”、”acccc”等在”a”后面出现一个或者多个”c”的字符串。”+”相当于”{1,}”。

星号:”*”字符用来匹配元字符前的字符出现零次或者多次。例如”/ac*/”表示被匹配的对象可以是”app”、”acp”、”accp”等在”a”后面出现零个或者多个”c”的字符串。”*”相当于”{0,}”。

问号:”?”字符用来匹配元字符前的字符出现零次或者1次。例如”/ac?/”表示匹配的对象可以是”a”、”acp”、”acwp”这样在”a”后面出现零个或者1个”c”的字符串。”?”在正则表达式中还有一个非常重要的作用,即”贪婪模式”。

还有两个很重要的特殊字符就是”[ ]“。他们可以匹配”[]“之中出现过的字符,比如”/[az]/”可以匹配单个字符”a”或者”z”;如果把上面的表达式改成这样”/[a-z]/”,就可以匹配任何单个小写字母,比如”a”、”b”等等。

如果在”[]“中出现了”^”,代表本表达式不匹配”[]“内出现的字符,比如”/[^a-z]/”不匹配任何小写字母!并且正则表达式给出了几种”[]“的默认值:

[:alpha:]:匹配任何字母

[:alnum:]:匹配任何字母和数字

[:digit:]:匹配任何数字

[:space:]:匹配空格符

[:upper:]:匹配任何大写字母

[:lower:]:匹配任何小写字母

[:punct:]:匹配任何标点符号

[:xdigit:]:匹配任何16进制数字

另外下面这些特殊字符在转义符号””转义后代表的含义如下:

s:匹配单个的空格符

S:用于匹配除单个空格符之外的所有字符。

d:用于匹配从0到9的数字,相当于”/[0-9]/”。

w:用于匹配字母,数字或下划线字符,相当于”/[a-zA-Z0-9_]/”。

W:用于匹配所有与w不匹配的字符,相当于”/[^a-zA-Z0-9_]/”。

D:用于匹配任何非10进制的数字字符。

.:用于匹配除换行符之外的所有字符,如果经过修饰符”s”的修饰,”.”可以代表任意字符。

利用上面的特殊字符可以很方便的表达一些比较繁琐的模式匹配。例如”/d0000/”利用上面的正则表达式可以匹配万以上,十万一下的整数字符串。

定位字符:

定位字符是正则表达式中又一类非常重要的字符,它的主要作用是用于对字符在匹配对象中的位置进行描述。

^:表示匹配的模式出现在匹配对象的开头(和在”[]“里面不同)

$:表示匹配的模式出现在匹配对象的末尾

空格:表示匹配的模式出现在开始和结尾的两个边界之一

“/^he/”:可以匹配以”he”字符开头的字符串,比如hello、height等等;

“/he$/”:可以匹配以”he”字符结尾的字符串即she等;

“/ he/”:空格开头,和^的作用一样,匹配以he开头的字符串;

“/he/”:空格结束,和$的作用一样,匹配以he结尾的字符串;

“/^he$/”:表示只和字符串”he”匹配。

括号:

正则表达式除了可以用户匹配,还可以用括号”()”来记录需要的信息,储存起来,给后面的表达式读取。比如:

/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-])$/

就是记录邮件地址的用户名,和邮件地址的服务器地址(形式为username@server.com之类的),在后面如果想要读取记录下来的字符串,只是需要用”转义符+记录的次序”来读取。比如”1〃就相当于第一个”[a-zA-Z0-9_-]+”,”2〃相当于第二个([a-zA-Z0-9_-]+),”3〃就是第三个(.[a-zA-Z0-9_-])。但是在PHP中,””是一个特殊的字符,需要转义,所以””到了PHP的表达式中就应该写成”1〃。

其他特殊符号:

“|”:或符号”|”和PHP里面的或一样,不过是一个”|”,而不是PHP的两个”||”!意思就是可以是某个字符或者另一个字符串,比如”/abcd|dcba/”可能匹配”abcd”或者”dcba”。

5贪婪模式:

前面在元字符中提到过”?”还有一个重要的作用,即”贪婪模式”,什么是

求PHP 的正则表达式 大全

匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*?/>评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为匹配首尾空白字符的正则表达式:^\s*|\s*$评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*评注:表单验证时很实用匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*评注:网上流传的版本功能很有限,上面这个基本可以满足需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$评注:表单验证时很实用匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}评注:匹配形式如 0511-4405222或 021-87888822匹配腾讯QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始匹配中国邮政编码:[1-9]\d{5}(?!\d)评注:中国邮政编码为6位数字匹配身份证:\d{15}|\d{18}评注:中国的身份证为15位或18位匹配ip地址:\d+\.\d+\.\d+\.\d+评注:提取ip地址时有用匹配特定数字: ^[1-9]\d*$//匹配正整数 ^-[1-9]\d*$//匹配负整数 ^-?[1-9]\d*$//匹配整数 ^[1-9]\d*|0$//匹配非负整数(正整数+ 0) ^-[1-9]\d*|0$//匹配非正整数(负整数+ 0) ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$//匹配正浮点数 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$//匹配负浮点数 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$//匹配浮点数 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$//匹配非负浮点数(正浮点数+ 0) ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$//匹配非正浮点数(负浮点数+ 0)评注:处理大量数据时有用,具体应用时注意修正匹配特定字符串: ^[A-Za-z]+$//匹配由26个英文字母组成的字符串 ^[A-Z]+$//匹配由26个英文字母的大写组成的字符串 ^[a-z]+$//匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$//匹配由数字和26个英文字母组成的字符串 ^\w+$//匹配由数字、26个英文字母或者下划线组成的字符串/http:\/\/(.*)\//i//匹配外部链接地址

满意请采纳

PHP正则表达式的使用技巧

  PHP正则表达式的定义

  用于描述字符排列和匹配模式的一种语法规则它主要用于字符串的模式分割匹配查找及替换操作

  PHP中的正则函数

  PHP中有两套正则函数两者功能差不多分别为

  一套是由PCRE(Perl Compatible Regular Expression)库提供的使用 preg_为前缀命名的函数

  一套由POSIX(Portable Operating System Interface of Unix)扩展提供的使用以 ereg_为前缀命名的函数(POSIX的正则函数库自PHP以后就不在推荐使用从PHP以后就将被移除)

  由于POSIX正则即将推出历史舞台并且PCRE和perl的形式差不多更利于我们在perl和php之间切换所以这里重点介绍PCRE正则的使用

  PCRE正则表达式

  PCRE全称为Perl Compatible Regular Expression意思是Perl兼容正则表达式

  在PCRE中通常将模式表达式(即正则表达式)包含在两个反斜线/之间如/apple/

  正则中重要的几个概念有元字符转义模式单元(重复)反义引用和断言这些概念都可以在文章[ ]中轻松的理解和掌握

  常用的元字符(Meta character)

  元字符说明

  /A匹配字符串串首的原子

  /Z匹配字符串串尾的原子

  /b匹配单词的边界//bis/匹配头为is的字符串/is/b/匹配尾为is的字符串//bis/b/定界

  /B匹配除单词边界之外的任意字符//Bis/匹配单词 This中的 is

  /d匹配一个数字等价于[ ]

  /D匹配除数字以外任何一个字符等价于[^ ]

  /w匹配一个英文字母数字或下划线等价于[ a zA Z_]

  /W匹配除英文字母数字和下划线以外任何一个字符等价于[^ a zA Z_]

  /s匹配一个空白字符等价于[/f/t/v]

  /S匹配除空白字符以外任何一个字符等价于[^/f/t/v]

  /f匹配一个换页符等价于/x c或/cL

  匹配一个换行符等价于/x a或/cJ

  匹配一个回车符等价于/x d或/cM

  /t匹配一个制表符等价于/x/或/cl

  /v匹配一个垂直制表符等价于/x b或/ck

  /oNN匹配一个八进制数字

  /xNN匹配一个十六进制数字

  /cC匹配一个控制字符

  模式修正符(Pattern Modifiers)

  模式修正符在忽略大小写匹配多行中使用特别多掌握了这一个修正符往往能解决我们遇到的很多问题

  i-可同时匹配大小写字母

  M-将字符串视为多行

  S-将字符串视为单行换行符做普通字符看待使匹配任何字符

  X-模式中的空白忽略不计

  U-匹配到最近的字符串

  e-将替换的字符串作为表达使用

  格式/apple/i匹配 apple或 Apple等忽略大小写/i

  PCRE的模式单元

  //提取第一位的属性

  /^/d{}([/W])/d{}///d{}$匹配//等字符串但上述正则表达式不匹配/的格式这是因为模式 [/W]的结果/已经被存储下个位置/引用时其匹配模式也是字符/

  当不需要存储匹配结果时使用非存储模式单元(?)

  例如/(?:a|b|c)(D|E|F)// g/将匹配 aEEg在一些正则表达式中使用非存储模式单元是必要的否则需要改变其后引用的顺序上例还可以写成/(a|b|c)(C|E|F)/ g/

  PCRE正则表达式函数

  以下为引用的内容

  preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace()

  函数的具体使用我们可以通过PHP手册来找到下面分享一些平时积累的正则表达式

  匹配action属性

  以下为引用的内容

  $str=;$match=; preg_match_all(//s+action=/(?!)(*?)//s/$str$match); print_r($match);

  在正则中使用回调函数

  以下为引用的内容

  /*** replace some string by callback function**/ function callback_replace(){$url=;$str=;$str= preg_replace(/(?<=/saction=/)(?!)(*?)(?=//s)/e search(/$url//)$str); echo$str;} function search($url$match){ return$url/$match;}

  带断言的正则匹配

  以下为引用的内容

  $match=;$str= xxxxxx cn bold font paragraph text

  ; preg_match_all(/(?<=<(/w{})>)*(?=<///>)/$str$match); echo匹配没有属性的HTML标签中的内容; print_r($match);

  替换HTML源码中的地址

  以下为引用的内容

  $form_= preg_replace(/(?<=/saction=/|/ssrc=/|/s)(?!|javascript)(*?)(?=//s)/e add_url(/$url////)$form_);

lishixinzhi/Article/program/PHP/201311/21027

好了,文章到这里就结束啦,如果本次分享的php正则和php正则表达式匹配邮箱,手机号码问题对您有所帮助,还望关注下本站哦!

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享