‘壹’ /^(0|[1-9]\d*)([.]5)$/ 在php正则中是什么意思
这个正则:匹配非负整数和非负整数加上0.5(即:xxx.5);
鉴于你给这么多分,详细来讲讲哈:
^ 匹配开头,$匹配结尾,意味着匹配的字符串,必须最多只能是数字和".5"组成,不能包含其他字符。
()是分组,| 是或者的意思,\d*这个表示0-9,第一个括号里面的意思是,字符串为0,或者1-9里面的任意数字,加上0-9组成的任意位数的数字,即一个正整数。
第二个括号,[.],这里面只有1个'.',等价于'\.',即小数点;后面的5就是数字5;最后加个问号,代表后面的".5"是可选的,可以不要。
总结:上面的正则能匹配:0,1,2,3,0.5,1.5,999,999.5这些类型的数字字符串。
有不明白的,欢迎继续追问。
‘贰’ 如何用php正则表达式取出“字符”间的字符
PHP使用正则表达式提取字符串中尖括号<>、小括号()、中括号[]、大括号{}中的字符示例,需要的朋友可以参考下
复制代码 代码如下:
$str="你好<我>(爱)[北京]{天安门}";
echo f1($str); //返回你好
echo f2($str); //返回我
echo f3($str); //返回爱
echo f4($str); //返回北京
echo f5($str); //返回天安门
function f1($str)
{
$result = array();
preg_match_all("/^(.*)(?:<)/i",$str, $result);
return $result[1][0];
}
function f2($str)
{
$result = array();
preg_match_all("/(?:<)(.*)(?:>)/i",$str, $result);
return $result[1][0];
}
function f3($str)
{
$result = array();
preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result);
return $result[1][0];
}
function f4($str)
{
$result = array();
preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result);
return $result[1][0];
}
function f5($str)
{
$result = array();
preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result);
return $result[1][0];
}
PS: (?:字符) 表示不捕获这个字符。貌似PHP不支持将字符换成括号。
否则的话可以将环视给嵌套进去,就可以循环匹配了。
PS2:环视:(?!) (?=) (?<!) (?<=)
有小于号的在右侧匹配,没有的在左侧匹配。感叹号表示不等,等于号表示相等。
PS3:都过了验证器的验证,验证器见参考资料。
‘叁’ PHP正则表达式提取字符串中小括号中的数字
<?php
$str = "abcd(ab)(1),efg(10),hijk(lmn)(5)"; //可以设置成任意字符串
preg_match_all("|(.*)[(](.*)[)](.*)|isU",$str,$str_ary);
$total = 0;
foreach( $str_ary[2] as $value)
$total += intval($value);
echo $total;
?>
‘肆’ PHP正则表达式提取字符串中尖括号<>、小括号()、中括号[]、大括号{}中的字符
1、
function f1($str)
{
$result = array();
preg_match_all("/^(.*)(?:<)/i",$str, $result);
return $result[1][0];
}
2、
function f2($str)
{
$result = array();
preg_match_all("/(?:<)(.*)(?:>)/i",$str, $result);
return $result[1][0];
}
3、
function f3($str)
{
$result = array();
preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result);
return $result[1][0];
}
4、
function f4($str)
{
$result = array();
preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result);
return $result[1][0];
}
5、
function f5($str)
{
$result = array();
preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result);
return $result[1][0];
}
PS: (?:字符) 表示不捕获这个字符。貌似PHP不支持将字符换成括号。
否则的话可以将环视给嵌套进去,就可以循环匹配了。
PS2:环视:(?!) (?=) (?<!) (?<=)
有小于号的在右侧匹配,没有的在左侧匹配。感叹号表示不等,等于号表示相等。
PS3:都过了验证器的验证,验证器见参考资料。