查看: 2525|回复: 0

[PHP代码] php正则表达式的三个最基本原则分享

发表于 2018-4-18 08:02:03

我个人认为,正则表达式的常规用法可以分为如下三个最基本的原则:1、找谁、2、怎么找、3、找它干什么。
接下来,我分享一下一个正则表达式分三个部分:
原子字符
. 匹配除换行符以外的任意字符
\w 匹配一个字母或数字或下划线
\s 匹配一个空白符
\d 匹配一个数字
\b 匹配单词的开始或结束的位置(匹配一个位置)
^ 匹配字符串的开始
$ 匹配字符串的结束

表示范围
[] 匹配括号中的任意一个字符

量词

重复0次或更多次

重复1次或更多次
? 重复0次或1次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

反义
\W \w取反
\S \s取反
\D \d取反
\B \b取反
[^x] 匹配除了x以为的任意一个字符
[^abcde] 匹配除了abcde以为的任意一个字符

分支
| 表示分支,在[]中无效,匹配分支条件时,从左往右匹配,当匹配到某个分支时结束,不会再考虑后面的分支

分组
捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?exp) 匹配exp,并捕获文本到名为name的组里
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

零宽断言
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?

注释
(?#comment) 提供注释辅助阅读,不对正则产生任何影响

反向引用
\1 引用第一个分组子匹配
\n 引用第n个分组子匹配
\k 引用命名为name的分组子匹配

懒惰模式
*? 任意次
+? 一次或多次
?? 0次或1次
{m,n}? m-n之间
{m,}? 至少m

常用正则
/^\d+$/ 非负整数
/^[1-9]+[0-9]$/ 正整数
/^-\d+$|0/ 非正整数
/^-[1-9]+[0-9]
$/ 负整数
/^[\w-.]+@[\w-.]+(.[\w-]+)+$/ email地址
<(.)>.<\/\1>|<. \/> html标签
<[img|IMG].
?src=\'|\"[\'|\"].*?[\/]?>
提取img标签的src值。



回复

使用道具 举报