PHP经常使用正則表達式汇总

1.    平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用: 
2.    "^\d+$"  //非负整数(正整数 + 0) 
3.    "^[0-9]*[1-9][0-9]*$"  //正整数 
4.    "^((-\d+)|(0+))$"  //非正整数(负整数 + 0) 
5.    "^-[0-9]*[1-9][0-9]*$"  //负整数 
6.    "^-?\d+$"    //整数 
7.    "^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0) 
8.    "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数 
9.    "^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0) 
10.    "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数 
11.    "^(-?\d+)(\.\d+)?$"  //浮点数 
12.    "^[A-Za-z]+$"  //由26个英文字母组成的字符串 
13.    "^[A-Z]+$"  //由26个英文字母的大写组成的字符串 
14.    "^[a-z]+$"  //由26个英文字母的小写组成的字符串 
15.    "^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 
16.    "^\w+$"  //由数字、26个英文字母或者下划线组成的字符串 
17.    "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址 
18.    "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?

$"  //url 
19.    /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日 
20.    /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年 
21.    "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil 
22.    /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?

([0-9]{7,8})(\-[0-9]+)?$/     //电话号码 
23.    "^(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}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址 
24.    
25.    匹配中文字符的正則表達式: [\u4e00-\u9fa5] 
  PHP 端匹配中文字符的正則表達式: /^[\x{4e00}-\x{9fa5}]{6,12}$/u
26.    匹配双字节字符(包含汉字在内):[^\x00-\xff] 
27.    匹配空行的正則表達式:\n[\s| ]*\r 
28.    匹配HTML标记的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
29.    匹配首尾空格的正則表達式:(^\s*)|(\s*$) 
30.    匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
31.    匹配网址URL的正則表達式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 
32.    匹配帐号是否合法(字母开头。同意5-16字节,同意字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
33.    匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 
34.    匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 
35.    
36.    
37.    元字符及其在正則表達式上下文中的行为: 
38.    
39.    \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。 
40.    
41.    ^ 匹配输入字符串的開始位置。假设设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。 
42.    
43.    $ 匹配输入字符串的结束位置。假设设置了 RegExp 对象的Multiline 属性。$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。 
44.    
45.    * 匹配前面的子表达式零次或多次。 
46.    
47.    + 匹配前面的子表达式一次或多次。+ 等价于 {1,}。 
48.    
49.    ? 匹配前面的子表达式零次或一次。

?

等价于 {0,1}。 
50.    
51.    {n} n 是一个非负整数,匹配确定的n 次。

 
52.    
53.    {n,} n 是一个非负整数。至少匹配n 次。 
54.    
55.    {n,m} m 和 n 均为非负整数,当中n <= m。最少匹配 n 次且最多匹配 m 次。

在逗号和两个数之间不能有空格。 
56.    
57.    ? 当该字符紧跟在不论什么一个其它限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时。匹配模式是非贪婪的。

非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

 
58.    
59.    . 匹配除 "\n" 之外的不论什么单个字符。要匹配包含 ’\n’ 在内的不论什么字符,请使用象 ’[.\n]’ 的模式。

 
60.    (pattern) 匹配pattern 并获取这一匹配。 
61.    
62.    (?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配。不进行存储供以后使用。

 
63.    
64.    (?=pattern) 正向预查,在不论什么匹配 pattern 的字符串開始处匹配查找字符串。这是一个非获取匹配。也就是说,该匹配不须要获取供以后使用。 
65.    
66.    (?!pattern) 负向预查,与(?=pattern)作用相反 
67.    
68.    x|y 匹配 x 或 y。 
69.    
70.    [xyz] 字符集合。

 
71.    
72.    [^xyz] 负值字符集合。

 
73.    
74.    [a-z] 字符范围。匹配指定范围内的随意字符。 
75.    
76.    [^a-z] 负值字符范围,匹配不论什么不在指定范围内的随意字符。 
77.    
78.    \b 匹配一个单词边界,也就是指单词和空格间的位置。

 
79.    
80.    \B 匹配非单词边界。 
81.    
82.    \cx 匹配由x指明的控制字符。

 
83.    
84.    \d 匹配一个数字字符。等价于 [0-9]。 
85.    
86.    \D 匹配一个非数字字符。等价于 [^0-9]。 
87.    
88.    \f 匹配一个换页符。

等价于 \x0c 和 \cL。 
89.    
90.    \n 匹配一个换行符。等价于 \x0a 和 \cJ。

 
91.    
92.    \r 匹配一个回车符。等价于 \x0d 和 \cM。 
93.    
94.    \s 匹配不论什么空白字符,包含空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

 
95.    
96.    \S 匹配不论什么非空白字符。

等价于 [^ \f\n\r\t\v]。 
97.    
98.    \t 匹配一个制表符。等价于 \x09 和 \cI。 
99.    
100.    \v 匹配一个垂直制表符。

等价于 \x0b 和 \cK。 
101.    
102.    \w 匹配包含下划线的不论什么单词字符。

等价于’[A-Za-z0-9_]’。 
103.    
104.    \W 匹配不论什么非单词字符。等价于 ’[^A-Za-z0-9_]’。 
105.    
106.    \xn 匹配 n。当中 n 为十六进制转义值。

十六进制转义值必须为确定的两个数字长。 
107.    
108.    \num 匹配 num。当中num是一个正整数。对所获取的匹配的引用。

 
109.    
110.    \n 标识一个八进制转义值或一个后向引用。假设 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,假设 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

 
111.    
112.    \nm 标识一个八进制转义值或一个后向引用。假设 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。假设 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。假设前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7)。则 \nm 将匹配八进制转义值 nm。 
113.    
114.    \nml 假设 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7)。则匹配八进制转义值 nml。 
115.    
116.    \un 匹配 n。当中 n 是一个用四个十六进制数字表示的Unicode字符。 
117.    
118.    匹配中文字符的正則表達式: [u4e00-u9fa5] 
119.    
120.    匹配双字节字符(包含汉字在内):[^x00-xff] 
121.    
122.    匹配空行的正則表達式:n[s| ]*r 
123.    
124.    匹配HTML标记的正則表達式:/<(.*)>.*</1>|<(.*) />/ 
125.    
126.    匹配首尾空格的正則表達式:(^s*)|(s*$) 
127.    
128.    匹配Email地址的正則表達式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 
129.    
130.    匹配网址URL的正則表達式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 
131.    
132.    利用正則表達式限制网页表单里的文本框输入内容: 
133.    
134.    用 正則表達式限制仅仅能输入中文:οnkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"
135.    
136.    用正則表達式限制仅仅能输入全角字符: οnkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))" 
137.    
138.    用正則表達式限制仅仅能输入数 字:οnkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" 
139.    
140.    用正則表達式限制仅仅能输入数字和英 文:οnkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" 
141.    
142.    =========经常使用正则式 
143.    
144.    
145.    
146.    匹配中文字符的正則表達式: [\u4e00-\u9fa5] 
147.    
148.    匹配双字节字符(包含汉字在内):[^\x00-\xff] 
149.    
150.    匹配空行的正則表達式:\n[\s| ]*\r 
151.    
152.    匹配HTML标记的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
153.    
154.    匹配首尾空格的正則表達式:(^\s*)|(\s*$) 
155.    
156.    匹配IP地址的正則表達式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g // 
157.    
158.    匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
159.    
160.    匹配网址URL的正則表達式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?

%&=]*)?

 
161.    
162.    sql语句:^(select|drop|delete|create|update|insert).*$ 
163.    
164.    1、非负整数:^\d+$ 
165.    
166.    2、正整数:^[0-9]*[1-9][0-9]*$ 
167.    
168.    3、非正整数:^((-\d+)|(0+))$ 
169.    
170.    4、负整数:^-[0-9]*[1-9][0-9]*$ 
171.    
172.    5、整数:^-?\d+$ 
173.    
174.    6、非负浮点数:^\d+(\.\d+)?$ 
175.    
176.    7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 
177.    
178.    8、非正浮点数:^((-\d+\.\d+)?

)|(0+(\.0+)?))$ 
179.    
180.    9、负浮点数:^(-((正浮点数正则式)))$ 
181.    
182.    10、英文字符串:^[A-Za-z]+$ 
183.    
184.    11、英文大写串:^[A-Z]+$ 
185.    
186.    12、英文小写串:^[a-z]+$ 
187.    
188.    13、英文字符数字串:^[A-Za-z0-9]+$ 
189.    
190.    14、英数字加下划线串:^\w+$ 
191.    
192.    15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 
193.    
194.    16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 
195.    或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$ 
196.    
197.    17、邮政编码:^[1-9]\d{5}$ 
198.    
199.    18、中文:^[\u0391-\uFFE5]+$ 
200.    
201.    19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?

(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$ 
202.    
203.    20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?

13\d{9}$ 
204.    
205.    21、双字节字符(包含汉字在内):^\x00-\xff 
206.    
207.    22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数) 
208.    
209.    23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/> 
210.    
211.    24、匹配空行:\n[\s| ]*\r 
212.    
213.    25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

 
214.    
215.    26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
216.    
217.    27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

 
218.    
219.    28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+) 
220.    
221.    29、提取信息中的中国手机号码:(86)*0*13\d{9} 
222.    
223.    30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 
224.    
225.    31、提取信息中的中国电话号码(包含移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 
226.    
227.    32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5} 
228.    
229.    33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+ 
230.    
231.    34、提取信息中的不论什么数字 :(-?\d*)(\.\d+)?

 
232.    
233.    35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+) 
234.    
235.    36、电话区号:/^0\d{2,3}$/ 
236.    
237.    37、腾讯QQ号:^[1-9]*[1-9][0-9]*$ 
238.    
239.    38、帐号(字母开头。同意5-16字节,同意字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
240.    
241.    39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

psa name_Windows 10安全性PSA:启用自动商店更新

psa nameMicrosoft sometimes distributes important security updates through the Microsoft Store. That’s the lesson we’re learning in July 2020, when Microsoft sent an important update for Windows 10’s HEVC codecs not via Windows Update but via the Store.…

C# ListView 简单命令例子

编写工具常用到ListView控件&#xff0c;能简单列出选项&#xff0c;常用到流程校验显示。这里介绍简答显示&#xff0c;添加与删除功能。 1.添加表头&#xff0c;与显示。 this.listView1.Columns.Add("队列", 40, HorizontalAlignment.Left);this.listView1.Column…

C#并行编程-Task

什么是异步同步和异步主要用于修饰方法。当一个方法被调用时&#xff0c;调用者需要等待该方法执行完毕并返回才能继续执行&#xff0c;我们称这个方法是同步方法&#xff1b;当一个方法被调用时立即返回&#xff0c;并获取一个线程执行该方法内部的业务&#xff0c;调用者不用…

手机照片丢失或误删如何恢复

手机照片丢失或误删如何恢复&#xff1f;我们每个人从刚出生就开始拍照片&#xff0c;一周岁照片、二周岁照片、三周岁照片等&#xff0c;因为照片可以记录我们从小到大的模样和变化。无意照片对我们每个人来说都很重要&#xff0c;如果手机突然坏以前的照片都找不到了怎么办呢…

C++学习笔记(二)——交换函数(swap)

这次我们要透过一个简单的函数swap深入理解函数传参的本质以及在C中如何选择传参方式。 先来看第一段程序&#xff1a; void swap(int x, int y) {int temp y;y x;x temp; } 通过main函数的调用&#xff0c;我们发现x,y并未实现交换&#xff1a; int main() {int x 1;int y…

大数据背后是个万亿市场

2014年的GDP中消费占比已经超过了50%&#xff0c;标志着中国经济正在向市场经济转型&#xff0c;消费占GDP50%&#xff0d;70%是中等发达国家向市场经济过渡的一个表现&#xff0c;未来中国经济增长最大的引擎应该来源于消费&#xff0c;特别是个人消费。中国正在经历经济结构调…

ipad iphone开发_如何将iPhone或iPad置于恢复模式

ipad iphone开发If your iDevice starts acting strangely and you’ve run through the gamut of normal troubleshooting fixes, Recovery Mode may be your answer. This lets you easily reset the device and re-install iOS using iTunes. 如果您的iDevice开始运行异常&a…

从三层架构说起,谈谈对历史项目的小改造

web development项目背景说明最近接手一个 “老” 项目的需求修改&#xff0c;项目整体基于 .net core 3.1 平台&#xff0c;以传统的三层架构为基础构建。了解需求后&#xff0c;逐步对原有项目框架进行大概的了解&#xff0c;主要是熟悉一些框架的开发规范&#xff0c;基本工…

C# message简单实现窗口间信息接收与发送

刚接触windows 不同程序 窗口消息传递&#xff0c;不理解IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam)这函数怎么用&#xff1f;消息内容怎么传递过去&#xff0c;还遇到需要message结构体&#xff1f;IntPtr怎么用呢&#xff1f; 但实际只是用来传个…

在Kubernetes集群上部署和管理JFrog Artifactory

JFrog Artifactory是一个artifacts仓库管理平台&#xff0c;它支持所有的主流打包格式、构建工具和持续集成&#xff08;CI&#xff09;服务器。它将所有二进制内容保存在一个单一位置并提供一个接口&#xff0c;这使得用户在整个应用程序开发和交付过程中&#xff0c;能更易于…

已知思科ASA设备漏洞仍在其新版本中存在

近日&#xff0c;名为“Shadow Brokers(影子经纪人)”的黑客组织声称成功入侵了跟NSA相关的Equation Group(方程式组织)的计算机系统&#xff0c;并成功窃取到了大量的机密信息以及黑客工具。随后&#xff0c;“Shadow Brokers”黑客组织将60%的泄漏文件在网上进行了公布&#…

Yii Listview

转载于:https://www.cnblogs.com/xiong63/p/8546376.html

Git 操作笔记/pip换源

pip换源 阿里云的源,在cmd命令行中输入上述命令即可 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ 还原commit 不可逆 1.git log2.选择某次提交的commit ID3.使用git reset --hard commit ID 远程查看与断开 git remote -vgit remote rem…

.NET 7 的 AOT 到底能不能杠反编译?

一&#xff1a;背景 1.讲故事在B站&#xff0c;公众号上发了一篇 AOT 的文章后&#xff0c;没想到反响还是挺大的&#xff0c;都称赞这个东西能抗反编译&#xff0c;可以让破解难度极大提高&#xff0c;可能有很多朋友对逆向不了解&#xff0c;以为用 ILSpy,Reflector,DnSpy 这…

google hdr+_更好的隐私权控制使Google+死了

google hdrEarlier this year, Google started a project to review third-party developer access to Google accounts through the use of APIs. It found a security breach surrounding Google, and is now shutting the service down, at least for consumers. 今年年初&a…

新0-Day漏洞或将给Linux桌面发行版带来浩劫

Linux 的各个发行版都一直强调安全及其相关元素&#xff0c;比如防火墙、渗透测试、沙盒、无痕上网和隐私等等&#xff0c;但事实上可能并没有想象中的那么安全。安全研究员 Chris Evans 公开了其发现的针对 Linux 桌面发行版的 0day 漏洞&#xff0c;利用特制的音频文件入侵 L…

php中把美国时间转为北京时间的自定义

我的服务器北京时间&#xff0c;php调用的时间&#xff1a; date.timezone "America/Chicago" 这是美国这边的一个时间&#xff0c;有的时候跟北京相差13个小时&#xff0c;有的时候跟北京时间相差14个小时&#xff0c;所以很不好处理&#xff0c;现在php函数就能处…

C# DataTable笔记

文章转载自http://www.cnblogs.com/Sandon/p/5175829.html 感谢博主Sandon。 为了方便以后编程查看&#xff0c;特把文章复制过来。 创建表 //创建一个空表 DataTable dt new DataTable(); //创建一个名为"Table_New"的空表 DataTable dt new DataTable("Tabl…

一份详尽的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北

2019独角兽企业重金招聘Python工程师标准>>> 概 述 Kubernetes集群的搭建方法其实有多种&#xff0c;比如我在之前的文章《利用K8S技术栈打造个人私有云&#xff08;连载之&#xff1a;K8S集群搭建&#xff09;》中使用的就是二进制的安装方法。虽然这种方法有利于我…

.NET性能优化-使用内存+磁盘混合缓存

我们回顾一下上一篇文章中的内容&#xff0c;有一个朋友问我这样一个问题&#xff1a;我的业务依赖一些数据&#xff0c;因为数据库访问慢&#xff0c;我把它放在 Redis 里面&#xff0c;不过还是太慢了&#xff0c;有什么其它的方案吗&#xff1f;其实这个问题比较简单的是吧&…