扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
正则表达式的语法规则
创新互联-专业网站定制、快速模板网站建设、高性价比道里网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式道里网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖道里地区。费用合理售后完善,十余年实体公司更值得信赖。
正则表达式描述了一种字符串匹配的模式,通过这个模式在特定的函数中对字符串进行匹配、查找、替换及分割等操作。
三个组成部分:
原子
元字符
模式修正符
以及 定界符
1 定界符
不仅局限”/“。除了字母、数字和反斜线”\“以外的任何字符都可以作为定界符号。
2 原子
1 普通字符作为原子
a~z A~Z 0~9
2 一些特殊字符和元字符作为原子
有特殊意义的符号,需使用转义字符”\“
3 一些非打印字符作为原子
\cx \f \n \r \t \w
4 使用”通用字符类型“作为原子
\d 匹配任意一个十进制数字,等价于[0-9]
\D匹配任意一个除十进制字以外的字符,等价于[^0-9]
\s匹配任意一个空白字符,等价于[\f\n\r\t\v]
\S匹配除空白字符以外任意一个字符,等价于[^\f\n\r\t\v]
\w匹配任意一个数字、字母或下划线,等价于[0-9a-ZA-Z]
\W匹配除数字、字母或下划线以外的任意一个字符,等价于[^0-9a-zA-Z]
5 自定义原子表([])作为原子
3 元字符
限定符
* 匹配0次、1次或多次其前的原子
+ 匹配1次或多次其前的原子
? 匹配0次或1此前的原子
{n} 表示其前面的原子恰好出现n次
{n,} 表示其前面的原子出现不少于n次
{n,m}表示其前面的原子至少出现n次,最多出现m次
句号
. 匹配除了换行符外的任意一个字符
模式选择符
| 匹配两个或多个分支选择
边界限制
^或\A匹配输入字符串的开始位置
$或\Z匹配输入字符串的结束位置
\b 匹配单词的边界
\B 匹配除单词边界以外的部分
[] 匹配方括号中指定的任意一个原子
[^] 匹配除方括号中原子以外的任意一个字符
模式单元
( ) 匹配其整体为一个原子,即模式单元。
后向引用
模式加元字符括号后,结果被存储到缓冲区中,可以使用“\n”(n为第n个括号)引用
模式修正符
在正则表达式定界符之外使用。
i 在和模式进行匹配时不区分大小写
m 将字符串视为多行(默认情况,不匹配换行符)
s 模式中的圆点元字符匹配所有字符,包括换行符。将字符串视为单行,换行符作为普通字符看待。(可以匹配换行符)
x 模式中的空白忽略不计,除非它已经被转义
e 只用在preg_replace()函数中,在替换字符串中对逆向引用做正常的替换,将其作为PHP代码求值,并用其结果来替换所搜索的字符串
U 反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复。(非贪婪模式,同.*?)
D 模式中的美元元字符仅匹配目标字符串的结尾。(没有此选项,如果最后一个字符是换行符,美元符号会匹配此字符之前)
与Perl兼容的正则表达式函数
一匹配与查找
1 preg_match()
通常用于表单验证。可以按指定的正则表达式模式,对字符串进行搜索和匹配一次。
@pattern提供用户按正则表达式语法编写的模式
@subject 字符串
@matches保存与第一个参数中的子模式的各个部分的匹配结果。Matches[0]保存了与正则表达式pattern匹配的整体内容。Matches其他元素是正则表达式小括号内按顺序依次的内容。
@return返回0或1,匹配结果数
Intpreg_match(string pattern,string subject[,array match])
2 preg_match_all()
一直搜索到指定字符串的结尾,可以获得所有匹配到的结果。
@pattern
@subjet
@matches所有匹配结果
@flags
PREG_PATTERN_ORDER: 对结果排序,$matches[0]为全部模式匹配的数组,$matches[1]为第一个括号中的子模式所匹配的字符串组成的数组。
PERG_SET_ORDER:对结果排序,使$matches[0]为第一组匹配项的数组,$matches[1]位第二组的匹配项数组。
@return 返回整个模式匹配的次数,如果出错则返回FALSE
intpreg_match_all(string pattern,string subject,array matches[, int flags])
3 preg_grep()
@pattern 正则表达式
@input 数组
@return 返回一个数组,包括了第二个参数input数组中与给定的第一个参数pattern模式相匹配的单元。(对input中的每个元素,只进行一次匹配)
arraypreg_grep(string pattern,array input)
4 strstr() strops() strrpos() substr()
二、字符串的替换
1 preg_replace()
@pattern 模式匹配项
@replacement 替换内容
@subject 原字符串
@limit 替换个数(值为-1,则所有都会匹配)
mixedpreg_replace( mixed pattern,mixed replacement ,mixe subject [,int limit])
注:与模式修正符e的搭配使用
2 str_replace()
三、字符串的分割和拼接
1 preg_split()
用途:返回一个字符串数组,数组中元素包含通过第二个参数subject中的字符串,经第一个参数的正则表达式pattern,作为匹配的边界所分割的子串。
@pattern 模式匹配项
@subject 字符串
@limit 替换个数
@flags
PREG_SPLIT_NO_EMPTY:如果设定了本标记,则preg_split()只返回非空部分
PREG_SPLIT_DELIM_CAPTURE:如果设定了本标记,定界符模式中的括号表达式也会被捕获并返回。
PREG_SPLIT_OFFSET_CAPTURE:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。
arraypreg_split( string pattern,string subject[,int limit [,flags]])
2 explode()
3 implode()
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流