PHP正则表达式之定界符和原⼦介绍
1,正则表达式的定界符。
除了字母、数字和反斜线\以外的任何字符都可以为定界符号,⽐如 | |、//、{}、!!等等,但是需要注意,如果没有特殊需要,我们都使⽤正斜线//作为正则表达式的定界符号。
2,正则表达式的构成。
我们看⼀下这个公式:/原⼦和元字符/模式修正符
也就是说,正则表达式的原⼦和元字符都放在定界符之间,⽽模式修正符放在定界符之外。
3,preg_match()函数
我们会在后⾯进⾏详细解释,这⾥只是为了帮助测试,其返回⼀个布尔值,表⽰是否成功匹配。
了解完以上简单的内容,让我们进⼊正题。
正则表达式中的原⼦
正则匹配等级域名网址
什么是原⼦?原⼦是正则表达式的最基本组成单位,⽽且必须⾄少要包含⼀个原⼦。只要⼀个正则表达式可以单独使⽤的字符,就是原⼦。
这个概念可能看起来很模糊,没关系,下⾯我们来介绍⼀下正则表达式中原⼦的构成⽅式。
原⼦构成⽅式
1,所有打印(所有可以在屏幕上输出的字符串)和⾮打印字符(看不到的,⽐如空格,换⾏符等等)
2,如果所有有意义的字符,想做为原⼦使⽤,统统使⽤“\”转义字符进⾏转义即可。如:\. \* \+ \? \( \<\>。
注意:" \ "转义字符可以将有意义的字符转成没意义的字符,还可以将没意义的字符转为有意义的字符。如:\d表⽰任意⼀个⼗进制的数字。
3,在正则表达式中可以直接使⽤⼀些系统提供的代表范围的原⼦,如下⾯的表格所⽰:
代表范围的原⼦说明⾃定义原⼦表⽰法
\d表⽰任意⼀个⼗进制的数字 [0-9]
\D表⽰任意⼀个除数字这外的字符 [^0-9]
\s表⽰任意⼀个空⽩字符,空格、\n\r\t\f [\n\r\t\f ]
\S表⽰任意⼀个⾮空⽩ [^\n\r\t\f ]
\w表⽰任意⼀个字 a-zA-Z0-9_ [a-zA-Z0-9_]
\W表⽰任意⼀个⾮字,除了a-zA-Z0-9_以外的任意⼀个字符 [^a-zA-Z0-9_]
4,⾃定义原⼦表(使⽤⽅括号[]),可以匹配⽅括号中的任何1个原⼦。
在上⾯的表格中我们已经将系统提供的范围原⼦使⽤⾃定义的⽅式作了等价转换。由于系统不可能提供所有我需要的原⼦,所以⾃定义原⼦表就显得⼗分必要了,⽐如我们想要匹配字母或者数字,就需要将原⼦写成[a-zA-Z0-9]。
这⾥需要注意:
A,符号“-”表⽰范围,如[a-z]表⽰⼩写字母a到z,但千万不要写成[a-9]这种形式!
B,符号“^”表⽰取反,⼀定要放在⽅括号的开头,⽐如我们想要匹配⾮数字,则原⼦为[^0-9]。
下⾯我们来看⼀下正则表达式原⼦的使⽤实例,代码如下:
复制代码代码如下:
<?php
pattern=′/\d/′;//数字原⼦表,也就是正则表达式的模式string = 'dsadsadsa';//需要匹配的字符串
if(preg_match(pattern,string)){
echo "正则表达式<strong>{$pattern} </strong>和字符串 <strong>{$string}</strong> 匹配成功";
}else{
echo "<span >正则表达式{$pattern}和字符串{$string}匹配失败</span>";
}
>
注意:⾃定义原⼦表中的原⼦有⼀个被字符串匹配上,就匹配成功了。⽽去掉⾃定义原⼦表的⽅括号,则表⽰匹配整个字符串。如'/abc/'表⽰字符串中必须有abc这个⼦串才能被匹配,⽽'/[abc]/'表⽰字符串中只要包含a、b和c中的任何⼀个字符,即被匹配。
⼤家可以将上⾯实例中的模式进⾏修改(也就是正则表达式的模式变量$pattern),进⽽对我们本节所讲的正则表达式的原
⼦进⾏验证。
--------------------------------------------------------------------------------------------------------
<?php
//接受表单传递过来的数据
str=_GET['str'];
//str="d";//声明⼀个正则表达式pattern = "/./";
//使⽤⼀个正则函数
result=preg m atch(pattern,str,match);
//echo '匹配结果为:'.result;if(result){
echo '<font color="green">匹配成功</font>';
}else{
echo '<font color="red">匹配失败</font>';
}
echo '<hr />';
var_dump($match);
>
-------------------------------------------------------------------------------------------------
Processing math: 100%
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论