首页技术php正则表达式验证用户名?正则表达式匹配密码

php正则表达式验证用户名?正则表达式匹配密码

编程之家2026-07-01708次浏览

大家好,感谢邀请,今天来为大家分享一下php正则表达式验证用户名的问题,以及和正则表达式匹配密码的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

php正则表达式验证用户名?正则表达式匹配密码

求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中有两套正则函数两者功能差不多分别为

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/

php正则表达式验证用户名?正则表达式匹配密码

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

常用的元字符(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正则表达式

优先匹配哪个?

通常是优先匹配左边的(从左往右执行嘛,然后又因为有贪婪性,比如[0-9]*[0-9]*去匹配123,左边的[0-9]*会匹配到12,右边的[0-9]*会匹配到3),正则表达式左边的部分会匹配到能是能使匹配成功的最长的匹配,具体原因如下:

贪婪、回溯和正则导向引正则擎的急切性:正则的{}和*合+有具贪婪性会向后匹配到他们可以匹配的尽可能多的字符串。但是如果重复性的匹配会引起整个(后面的)正则表达式匹配失败时,会引起回溯,放弃最后一次重复匹配(相当于剩余的字符串从左边增加了一位),用表达式后面的部分匹配剩余的字符串。在前面的正则匹配成功后立即用剩余的表达式部分继续匹配后面的内容,如果匹配成功会立刻返回匹配成功,不会继续回溯(php的正则表达式引擎室正则导向的)

里面的(.*)是怎么找得?

*有具贪婪性会向后匹配到.可以匹配的最大长度的字符串,最初匹配到-2011-2012,然后因为回溯不断减少匹配的值,直到匹配-201。

过程是怎样的,

执行顺序:

1.[0-9]{2,4}会先匹配到2010,

2.然后(.*),因为*得贪婪性会匹配到后面所有.能匹配的字符-2011-2012。

3.此时表达式执行到[0-9]{1,2},因为[0-9]{1,2}此时没有任何可以匹配的内容,所以引起回溯(.*)匹配到前一次匹配结果的倒数第2位重新匹配到-2011-201,[0-9]{1,2}与最后一位匹配成功得到字符串最后面的2,因为正则引擎的急切性,匹配成功后会立即用正则表达式剩余的部分继续向后匹配。

4.此时表达式执行到\1,字符串后面没有剩下任何东西所以\1(\1指(.*)匹配的结果-2011-201)匹配失败,然后引起回溯。[0-9]{1,2}向前移一位,结果[0-9]{1,2}没有字符可以进行匹配操作,匹配失败。引起回溯,(.*)匹配到前一次匹配结果的倒数第2位重新匹配到-2011-20,再用[0-9]{1,2}匹配得到12,后面依然没有字符与\1匹配,引起回溯,此次[0-9]{1,2}匹配到1,\1(此时值为-2011-20)与2匹配再次失败。于是重复上面的回溯【此处省去n百字,总之是重复上面的回溯】,直到(.*)匹配到-201,\1匹配到了-2012中的-201,因为正则导向的正则引擎是急切的,不再进行回溯,继续后面的匹配。

5.最后,[0-9]{1,2}与字串剩余部(最后一个字符)2匹配成功返回,因为正则导向的正则引擎是急切的,所以立刻返回匹配结果,不再进行回溯。

睡觉前看到的没想到写出来这么难,不过也没白写,就当总结了。

关于php正则表达式验证用户名和正则表达式匹配密码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

dreamweaver网页制作教程,dw网页制作成品免费下载怎么编写c语言程序?编写c语言的软件