‘壹’ php从入门到精通—正则表达式—初识正则表达式、正则表达式语法规则、相关函数、常见应用、用法自查表
初识正则表达式
正则表达式,一种用于匹配和处理文本的字符串描述工具,广泛应用于Linux、Unix系统工具中,如Vi编辑器、Perl或PHP脚本语言以及Shell脚本等,展现出其强大的跨语言、跨系统应用能力。学习正则表达式,不仅能够简化文本处理任务,还能提高程序性能和代码效率。
正则表达式语法规则
行定位符(^和$)
通过行定位符(^和$),正则表达式支持定位功能,分别用于匹配字符串的开始和结束位置,精准控制字符在字符串中的定位。
单词定界符(\b和\B)
\b用于匹配单词边界,而\B匹配非单词边界,帮助识别文本中的单词分界,增强正则表达式的精确度。
字符类
通过方括号表达式([]),正则表达式实现对特定字符集的匹配,如忽略大小写的字符匹配,提升文本处理的灵活性。
选择字符(|)
|表示“或”操作,允许匹配多个选项之一,简化复杂匹配条件的表达。
连字符(-)
连字符简化表达式,匹配连续字符,如数字、字母等,提高匹配效率。
反义字符
使用^表示反义字符,匹配不在指定范围内的任意字符,优化文本匹配逻辑。
限定符
限定符指定匹配组件的重复次数,实现精确的文本匹配,提高正则表达式的应用范围。
点字符(.)
.匹配除换行符外的任意单个字符,用于灵活匹配文本中的字符。
转义字符
转义字符将特殊字符转换为普通字符,如\.匹配字符.,确保正则表达式中的特殊字符正常生效。
反斜线(\)
\在正则表达式中用于转义特殊字符,同时具有其他功能,如后接字母表示更多功能。
括号字符
括号用于改变优先级,组合小原子为大原子,整合匹配项,简化匹配逻辑。
反向引用
反向引用允许匹配连续出现的字符串或字母,通过表达式的“记忆”功能实现,提高匹配效率。
正则表达式相关函数
preg_match()函数
用于对指定字符串进行匹配,返回匹配结果或0(未匹配)。
preg_match_all()函数
全局匹配功能,从头到尾搜索匹配结果,直至获取所有相匹配的内容。
preg_replace()函数
实现字符串搜索和替换,功能强大,适用于复杂文本处理。
preg_split()函数
完成字符串的复杂分割操作,如同时分割多个字符。
preg_grep()函数
匹配数组中的元素,筛选出符合正则表达式模式的单元。
正则表达式常见应用
手机号码和邮箱验证
编写正则表达式匹配规范格式的手机号码和邮箱,确保数据输入的准确性。
验证网址URL合法性
构建正则表达式匹配合法的URL结构,确保网络资源的有效访问。
正则表达式用法自查表
总结正则表达式的用法,提供方便快捷的学习参考,帮助用户掌握正则表达式的书写规则。
总结:学习正则表达式能够有效提升文本处理效率,通过掌握其基本概念、语法规则以及常见应用,用户能够灵活运用正则表达式解决实际问题,提高程序开发和文本处理的能力。
‘贰’ php 正则表达式如何判断一个字符串是否为合法的四则数学算式
代码如下(经测通过):
<?php
$str="((1+1)*3.3)/10-12+(1+1)";
if(preg_match("/[+-*/.]{2}|[^+-*/()d.]+/i",$str,$matches)){
echo'非法算式';
}else{
if(substr_count($str,"(")==substr_count($str,")")){
echo'合法算式';
}else{
echo'括号不匹配';
}
}
?>
判断str里是否存在连续运算符、小数点或运算符、括号、数字以外的字符
若存在则非法
若不存在则判断str里( 和 )数量是否一致
‘叁’ 超常用的PHP正则表达式收集整理
以下就是对超常用的PHP正则表达式进行的收集整理,为了方便大家更快更好的掌握php正则表达式。
:]*$!是对php中单引号的转义。或者还有更简单的!^/?[a-z0-9=:]*$!ii表示忽略大小写。模式分隔符就是为了区分表达式和像i这样的模式修饰符而设计的。
什么是正则表达式:简单的说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基于UNIX/LINUX系统的软件工具中找到正则表达式的痕迹,例如:Perl或PHP脚本语言。
ThinkPHP的自动验证常用的正则一般我们见的比较多的是设置规则为require、email之类的,其实这些本身也是属于正则表达式验证方式,只是系统内置定义了一些常用的正则表达式而已。
关键地方是汉字的表示xa0-xff。下面是我写的例子程序,调试通过:?phpstr=汉字123456abcdef+-*/ABCDE!@#$%^&*()结尾。
‘肆’ php 正则表达式 只能包含字母和数字
式子:/^[a-zA-Z0-9]+$/u
释义:
"/":表示正则表达式的定义,固定写法。
"^":表示开头。
"[]":表示字符组。匹配所包含的任意一个字符。如,“[ab]”匹配“plain”中的“a”。
"a-z":表示匹配小写字母a-z的字母范围。
"A-Z":表示匹配大写字母A-Z的字母范围。
"0-9":表示匹配0-9的数字范围。
"+":表示匹配次数大于等于1。
"$":匹配输入行尾。如果设置了RegExp对象Multiline属性,$也匹配“
”或“
”之前的位置。
"u":最后的u是模式修饰符,严格的说可能叫预定义常量。表示使用unicode进行匹配。

(4)php正则表达式详解扩展阅读:
其它正则表达式符号的含义:
1、"*":匹配前面的子表达式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于{0,}。
2、"?":匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{0,1}。
3、"{n}":n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
4、"{n,}":n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
5、"{n,m}":m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o为一组,后三个o为一组。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
‘伍’ php正则表达式匹配一段中文,中间有换行,空白,应该怎么写
有多种处理方法:
1、使用[sS]匹配任意字符,而不是使用“.”
2、使用s单行修饰模式,例:$pattern='#abc.*?def#s';//能匹配abc换行def
3、使用s*匹配换行和空格,php里s能匹配空白字符,含换行
php里的中文使用[x7f-xff]表示,因此,使用正则:
$pattern='#[x7f-xff]+(?:s*[x7f-xff]+)*#';即可