在这篇文章中,边肖与你分享了一篇关于php中常用正则表达式用法的文章。有兴趣的朋友可以参考一下,借鉴一下。
正则表达式经常被用来制作网站。下面是一些解释和例子,供你参考和修改:
匹配数字
d $ //非负整数(正整数0)
[0-9]*[1-9][0-9]* $ //正整数
((- d)|(0))$ //不是正整数(负整数0)
-[0-9]*[1-9][0-9]* $ //负整数
^-?d $//整数
^d (。d)?$ //非负浮点数(正浮点数0)
([0-9] .[0-9] * [1-9] [0-9] *) | ([0-9] * [1-9] [0-9] * .[0-9]) | ([0-9]
^((-d (。d)?)|(0 (.0 )?))$ //非正浮点数(负浮点数0)
(-([0-9] .[0-9] * [1-9] [0-9] *) | ([0-9] * [1-9] [0-9] * .[0-9]) | ([0]
^(-?d )(。d)?$ //浮点数
匹配字母
[A-ZA-Z]$ //由26个英文字母组成的字符串
[A-Z]$ //由26个大写英文字母组成的字符串
[A-Z]$ //由26个小写英文字母组成的字符串
[A-ZA-Z0-9]$ //由数字和26个英文字母组成的字符串
w $ //由数字、26个英文字母或下划线组成的字符串。
匹配实例
[ w-] (。[ w-]) * @ [ w-] (。[ w-])$ /电子邮件地址
^[a-zA-z] ://(w (-w )*)(。( w(- w)*)*(?S*)?$//url
/(d { 2 } | d { 4 })-((0([1-9]{ 1 })|(1[1 | 2])-([0-2]([1-9]{ 1 })|(3[0 |
/((0([1-9]{ 1 })|(1[1 | 2])/([0-2]([1-9]{ 1 })|(3[0 | 1])/(d { 2 } | d
^([w-.] )@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]。)))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$ //埃米尔
/^(( ?[0-9]{2,4}-[0-9]{3,4}-)|([0-9]{3,4}-))?([0-9]{7,8})(-[0-9] )?$///电话号码
(d {1,2} | 1dd | 2 [0-4] d | 25 [0-5])。(d {1,2} | 1dd | 2 [0-4] d | 25 [0-5])。(d {1,2})
其他匹配
匹配汉字的正则表达式:[u4e00-u9fa5]
匹配双字节字符(包括汉字):[ x00- xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/(。*).* 1=|(.*)/
匹配前导空格和尾随空格的正则表达式:( s *) | ( s * $)
匹配电子邮件地址的正则表达式: w ([-。] w) * @ w ([-。] w) * 。 w ([-。] w) *
匹配URL的正则表达式:[a-za-z]://( w(- w)*)( ( w(- w)*)*( ?S*)?$
匹配账户是否合法(以字母开头,允许5-16个字节,允许字母数字下划线):[a-za-z] [a-za-z0-9 _] {4,15} $
匹配的国内电话号码:(d{3}-|d{4}-)?(d{8}|d{7})?
匹配腾讯QQ号码:[1-9] * [1-9] [0-9] * $
元字符及其在正则表达式上下文中的行为:
将下一个字符标记为特殊字符、原义字符、向后引用或八进制转义字符。
匹配输入字符串的起始位置。如果设置了RegExp对象的Multiline属性,它也会匹配“n”或“r”之后的位置。
$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也会匹配“n”或“r”之前的位置。
*匹配前一个子表达式零次或多次。
匹配前一个子表达式一次或多次。相当于{1,}。
?匹配前一个子表达式零次或一次。相当于{0,1}。
{n} n为非负整数,匹配确定的n次。
{n,} n是匹配至少n次的非负整数。
{n,m} m和n都是非负整数,其中n=m,至少匹配n次,最多匹配m次。逗号和两个数字之间不能有空格。
?当该字符跟在任何其他限定符(*,{n}、{n}、{n,m}),匹配模式不贪心。非贪婪模式尽可能少地匹配搜索到的字符串,而默认贪婪模式尽可能多地匹配搜索到的字符串。匹配除 n 以外的任何单个字符。若要匹配包括“n”在内的任何字符,请使用类似“[。n]。
(模式)匹配模式,得到这个匹配。
(?pattern)在没有获得匹配结果的情况下匹配模式,也就是说,它是一个未获得的匹配,不会被存储以备后用。
(?=pattern)向前预览,在任何字符串匹配模式的开头匹配搜索字符串。这是一个非获取匹配,即这个匹配不需要被获取以备后用。
(?模式)负面预览,以及(?=pattern)有相反的效果。
X|y匹配x或Y.
[xyz]字符集。
[XYZ]负字符集。
[a-z]字符范围,匹配指定范围内的任何字符。
[a-z]负字符范围,匹配不在指定范围内的任意字符。
b匹配单词边界,即单词和空格之间的位置。
B匹配非单词边界。
cx匹配由x表示的控制字符。
d匹配一个数字字符。相当于[0-9]。
D匹配一个非数字字符。相当于[0-9]。
f匹配分页符。相当于x0c和cL。
n匹配一个换行符。相当于x0a和cJ。
r匹配回车。相当于x0d和cM。
s匹配任何空白字符,包括空格、制表符、分页符等。相当于[fnrtv]。
S匹配任何非空白字符。相当于[ f n r t v]。
t匹配选项卡。相当于x09和cI。
v匹配垂直制表符。相当于x0b和cK。
w匹配任何单词字符,包括下划线。相当于“[A-Za-z0-9_]”。
W匹配任何非单词字符。相当于“[a-za-z0-9 _]”。
xn匹配n,其中n是十六进制转义值。十六进制转义值的长度必须是两位数。
num匹配num,其中num是正整数。对获得的匹配的引用。
n标识八进制转义值或向后引用。如果之前至少获得了n个子表达式,则n是向后引用。否则,如果n是一个八进制数(0-7),那么n就是一个八进制转义值。
nm标识八进制转义值或向后引用。如果nm前面至少有一个子表达式,则nm是向后引用。如果在nm之前至少有n次提取,则n是一个后向引用,后面跟一个字m,如果不满足前面的条件,如果n和m都是八进制数(0-7),nm将匹配八进制转义值nm。
nml如果n是八进制数(0-3),并且m和l都是八进制数(0-7),则它匹配八进制转义值nml。
n匹配n,其中n是由四个十六进制数字表示的Unicode字符。
匹配汉字的正则表达式:[u4e00-u9fa5]
匹配双字节字符(包括汉字):[x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/(。*).*| (.*)/
匹配前导空格和尾随空格的正则表达式:(s *) | (s * $)
匹配电子邮件地址的正则表达式:w ([-。]w )*@w ([-。]w )*。w ([-。]w )*
匹配URL的正则表达式:http://([w-]。)[w-] (/[w-。/?%=]*)?
使用正则表达式限制web表单中文本框的输入;
正则表达式只能输入汉字:onkeyup= value=value . replace(/[u4e 00-u9fa 5]/g, ) onbeforepoast= clipboard data . setdata( text ,clipboard data.getdata (text )。替换(/[
正则表达式只能输入全角字符:onkeyup= value=value . replace(/[uff 00-ufff]/g, ) onbeforepoast= clipboard data . setdata( text ,clipboard data.getdata (text )。替换(/[
只能用正则表达式输入数字:onkeyup= value=value . replace(/[d]/g, ) onbeforepoast= clipboard data . setdata( text ,clipboard data.getdata (text )。替换(/[d]/g,)
只能用正则表达式输入数字和英文:onkeyup= value=value . replace(/[w]/g, ) onbeforepast= clipboard data . setdata( text ,clipboard data.getdata (text )。替换(/[d]/g,)
一些常用的正则实例
1.非负整数: d美元
2.正整数:[0-9] * [1-9] [0-9] * $
3.非正整数:((- d) | (0)) $
4.负整数:-[0-9] * [1-9] [0-9] * $
5.整数:-?d美元
6.非负浮点数: d (。 d)?$
7.正浮点数:((0-9) 。[0-9] * [1-9] [0-9] *) | ([0-9] * [0-9] * [0-9]) | ([0]
8.非正浮点数:((- d d)?)|(0 (.0 )?))$
9.负浮点数:(-(正浮点数正则表达式))$
10.英文字符串:[a-za-z] $
1.英文大写字符串:[A-Z] $
12.英文小写字符串:[A-Z] $
13.英文字符串:[A-ZA-Z0-9] $
14.带下划线的英文数字串: w $
15.电子邮件地址:[ w-] (。[ w-]) * @ [ w-] (。[ w-]) $
16、URL:^[a-zA-Z] ://(w (-w )*)(。( w(- w)*)*(?s*)?$
或者:http: / [a-za-z0-9] 。[a-za-z0-9] [/=?%-_~`@[]:]*([^])*$
17.邮政编码:[1-9] d {5} $
18.中文:[ u0391- uffe5] $
19.电话号码:( (d {2,3 } )|( d { 3 } -)?((0d{2,3})|0d{2,3}-)?[1-9]d{6,7}(-d{1,4})?$
20.手机号:( (d {2,3 } )|( d { 3 } -)?13美元
21.双字节字符(包括汉字): x00- xff
22.匹配前导空格和尾随空格:( s *) | ( s * $)(类似vbscript的trim函数)
23.匹配HTML标签:(。*).* 1=|(.*)
24.匹配空行:n[s| ]*r
25.从信息中提取网络链接:(h|H)(r|R)(e|E)(f|F) *=*(| )?(w||/|。) (|| *|)?
26.从信息中提取邮件地址: w ([-。] w) * @ w ([-。] w) * 。 w ([-。] w) *
27.从信息中提取图片链接:(s|S)(r|R)(c|C) *=*(| )?(w||/|。) (|| *|)?
28.从信息中提取IP地址:(d )。(d )。(d )。(d)
29.从信息中提取中国的手机号码:(86)*0*13d{9}
30.从信息中提取中国的固定电话号码:( (d {3,4} ) | d {3,4}-| s)?d{8}
31.从信息中提取中国电话号码(包括移动电话和固定电话):( (d {3,4} ) | d {3,4}-| s)?d{7,14}
32.从信息中提取中国的邮政编码:[1-9]{1}(d ){5}
33.从信息中提取浮点数(即小数):(-?d*)。d
34.从信息中提取任意数字:(-?d*)(。d)?
35、IP:(d )。(d )。(d )。(d)
36.电话区号:/0 d {2,3} $/
37.腾讯QQ号码:[1-9] * [1-9] [0-9] * $
38.账号(以字母开头,允许5-16个字节,允许字母数字下划线):[A-ZA-Z] [A-ZA-Z0-9 _] {4,15} $
39.中文、英文、数字和下划线:[ u4e00- u9fa5 _ a-za-z0-9] $
附加
匹配汉字的正则表达式:[u4e00-u9fa5]
匹配双字节字符(包括汉字):[ x00- xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/(。*).* 1=|(.*)/
匹配前导空格和尾随空格的正则表达式:( s *) | ( s * $)
匹配IP地址的正则表达式:/(d )。(d )。(d )。(d )/g //
匹配电子邮件地址的正则表达式: w ([-。] w) * @ w ([-。] w) * 。 w ([-。] w) *
匹配URL的URL的正则表达式:http://(/[w-] 。)[w-] (/[w-。/?%=]*)?
Sql语句:(选择|删除|删除|创建|更新|插入)。* $
以上是我们边肖整理的所有相关知识点。谢谢你的研究。如果您有任何补充,请联系边肖。