在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作简而言之:可以判断所有的字符串是否满足规则的算式,而我们要做的,就是设定这条规则;
正则表达式不是PHP特有的知识,而是一门独立的知识点。几乎任何编程语言都要用正则表达式。因此,这个知识学会了。其它语言就不用再专门去学习了。都是用的同一个知识点。只不过不同语言操作正则表达式所用的函数有所不同而已。
正则表达式函数
preg_match:字符串比对解析
preg_match_all:字符串整体比对解析
preg_replace:字符串比对解析并取代
preg_split:将字符串依指定的规则切开
正则表达式速查表
\:转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\”匹配“\”而“(”则匹配“(”
^:匹配输入字符串的开始位置
$:匹配输入字符串的结束位置
*:匹配前面的子表达式零次或多次。例如,zo能匹配“z”以及“zoo”。等价于{0,}
+: 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}
?:匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}
{n}:n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o
{n,}:n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”
{n,m}:m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
x|y:匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则配“zood”或“food”。
[xyz] :字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[xyz]:负值字符集合。匹配未包含的任意字符。例如,“[abc]”可以匹配“plain”中的“p”。
[a-z] :字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z] :负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b:匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B:匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx:匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d:匹配一个数字字符。等价于[0-9]。
\D:匹配一个非数字字符。等价于[^0-9]。
\f:匹配一个换页符。等价于\x0c和\cL。
\n:匹配一个换行符。等价于\x0a和\cJ。
\r:匹配一个回车符。等价于\x0d和\cM。
\s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S:匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
\t:匹配一个制表符。等价于\x09和\cI。
\v:匹配一个垂直制表符。等价于\x0b和\cK。
\w:匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W:匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
正则表达式定义
用户名: /^[a-z0-9_-]{2,16}$/
密码: /^[a-z0-9_-]{6,16}$/
电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
网址:/http[s]?://([a-z0-9]+\.)?[a-z0-9]+\.[a-z0-9]+/
IP 地址: /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
HTML 标签:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
QQ号: /[0-9]{5,11}/
手机号: /1[3|5|8]{1}[\d]{9}/
固定电话:/([\d]{3,4}\-)?[\d]{7,8}/
邮政编码:/[\d]{6}/
任务
请写出常用的QQ、用户名、密码、邮箱的正则表达式,结合前台页面传递的值运用函数进行匹配达到有效拦截