php 常见的正则匹配表达式学习笔记
参考N+1个正则总结:
常见的正则匹配:
代码如下 | 复制代码 |
((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65)[0-9]{4})(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}[X0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3})) |
匹配腾讯QQ号:[1-9][0-9]{4,}注:腾讯QQ号从10000开始
价格:/(^[-+]?[1-9]d*(.d{1,2})?$)|(^[-+]?[0]{1}(.d{1,2})?$)/
验证用户密码:"^[a-zA-Z]w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
中国邮政编码:[1-9]{1}(d+){5}
中国手机号码:(86)*0*13d{9}
掩码:
代码如下 | 复制代码 |
/^(254|252|248|240|224|192|128|0).0.0.0$|^(255.(254|252|248|240|224|192|128|0).0.0)$|^(255.255.(254|252|248|240|224|192|128|0).0)$|^(255.255.255.(254|252|248|240|224|192|128|0|255))$/ |
中国电话号码(包括移动和固定电话):((d{3,4})|d{3,4}-|s)?d{7,14}
正则表达式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"(匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222)
中国身份证号码:
代码如下 | 复制代码 |
((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65)[0-9]{4})(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}[X0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3})) |
匹配空格/空行:
匹配空行的正则表达式:n[s| ]*r
匹配首尾空格的正则表达式:(^s*)|(s*$)
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配数字:
只能输入数字:"^[0-9]*$"
整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$
只能输入至少n位的数字:"^d{n,}$"。
只能输入m~n位的数字:。"^d{m,n}$"
只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"
只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"
只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"
只能输入非零的正整数:"^+?[1-9][0-9]*$"
只能输入非零的负整数:"^-[1-9][]0-9"*$
只能输入长度为3的字符:"^.{3}$"
匹配字母:
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"
只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"
只能输入由数字、26个英文字母或者下划线组成的字符串:"^w+$"
验证是否含有^%&',;=?$"等字符:"[^%&',;=?$x22]+"
下面附一些自己的正则表达式应用
代码如下 | 复制代码 |
function pregTP($test){ /** 电话号码匹配 电话号码规则: 区号:3到5位,大部分都是四位,北京(010)和上海市(021)三位,西藏有部分五位,可以包裹在括号内也可以没有 如果有区号由括号包裹,则在区号和号码之间可以有0到1个空格,如果区号没有由括号包裹,则区号和号码之间可以有两位长度的 或者- 号码:7到8位的数字 例如:(010) 12345678 或者 (010)12345678 或者 010 12345678 或者 010--12345678 */ $rule = '/^((((010)|(021)|(0d{3,4})))( ?)([0-9]{7,8}))|((010|021|0d{3,4}))([- ]{1,2})([0-9]{7,8})$/A'; preg_match($rule,$test,$result); return $result; } |
代码如下 | 复制代码 |
function pregURL($test){ /** 匹配url url规则: 例 协议://域名(www/tieba/baike...).名称.后缀/文件路径/文件名 http://www.111cn.net 协议://域名(www/tieba/baike...).名称.后缀/文件路径/文件名?参数 www.www.111cn.net 协议://域名(www/tieba/baike...).名称.后缀/文件路径/文件名/参数 http://www.111cn.net 协议:可有可无,由大小写字母组成;不写协议则不应存在://,否则必须存在:// 域名:必须存在,由大小写字母组成 名称:必须存在,字母数字汉字 后缀:必须存在,大小写字母和.组成 文件路径:可有可无,由大小写字母和数字组成 文件名:可有可无,由大小写字母和数字组成 参数:可有可无,存在则必须由?开头,即存在?开头就必须有相应的参数信息 */ $rule = '/^(([a-zA-Z]+)(://))?([a-zA-Z]+).(w+).([w.]+)(/([w]+)/?)*(/[a-zA-Z0-9]+.(w+))*(/([w]+)/?)*(?(w+=?[w]*))*((&?w+=?[w]*))*$/'; preg_match($rule,$test,$result); return $result; } |
代码如下 | 复制代码 |
function pregPOS($test){ /** 匹配邮编 规则:六位数字,第一位不能为0 */ $rule ='/^[1-9]d{5}$/'; preg_match($rule,$test,$result); return $result; } |
代码如下 | 复制代码 |
function pregCh($test){ //utf8下匹配中文 $rule ='/([x{4e00}-x{9fa5}]){1}/u'; preg_match_all($rule,$test,$result); return $result; } |
代码如下 | 复制代码 |
function pregTI($test){ |
代码如下 | 复制代码 |
function pregIP($test){ /** 匹配ip 规则: **1.**2.**3.**4 **1可以是一位的 1-9,两位的01-99,三位的001-255 **2和**3可以是一位的0-9,两位的00-99,三位的000-255 **4可以是一位的 1-9,两位的01-99,三位的001-255 四个参数必须存在 */ $rule = '/^((([1-9])|((0[1-9])|([1-9][0-9]))|((00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))).)((([0-9]{1,2})|(([0-1][0-9]{2})|(2[0-4][0-9])|(25[0-5]))).){2}(([1-9])|((0[1-9])|([1-9][0-9]))|(00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))$/'; preg_match($rule,$test,$result); return $result; } |
PHP file_put_contents() 函数是一次性向文件写入字符串或追加字符串内容的最合适选择。
file_put_contents()
file_put_contents() 函数用于把字符串写入文件,成功返回写入到文件内数据的字节数,失败则返回 FALSE
例子:
代码如下 | 复制代码 |
<?php |
运行该例子,浏览器输出:
18
而 test.txt 文件(与程序同目录下)内容则为:This is something.。
提示
•如果文件不存在,则创建文件,相当于fopen()函数行为。
•如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免(见下)。
•本函数可安全用于二进制对象。
以追加形式写入内容
当设置 flags 参数值为 FILE_APPEND 时,表示在已有文件内容后面追加内容的方式写入新数据:
代码如下 | 复制代码 |
<?php |
执行程序后,test.txt 文件内容变为:This is something.This is another something.
file_put_contents() 的行为实际上等于依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
那么到底file_put_contents与fwrite区别在哪里
如下为file_put_contents的实例代码:
代码如下 | 复制代码 |
<?php |
同样的功能使用fwrite的实例代码:
代码如下 | 复制代码 |
<?php |
从以上两个例子看出,其实file_put_contents是fopen、fwrite、fclose三合一的简化写法,这对程序代码的优化是有好处的,一方面在代码量上有所减少,另一方面不会出现fclose漏写的不严密代码,在调试、维护上方便很多。
上述例子里,file_put_contents是从头写入,如果要追加写入,怎么办呢?
在file_put_contents的语法里,有个参数FILE_APPEND,这是追加写入的声明。实例代码如下:
代码如下 | 复制代码 |
<?php |
FILE_APPEND就是追加写入的声明。在追加写入时,为了避免其他人同时操作,往往需要锁定文件,这时需要加多一个LOCK_EX的声明,写法如下:
代码如下 | 复制代码 |
<?php |
注意,以上代码中echo输出到显示器里的是写入文件字符串的长度
用户登录就是用户输入用户名密码点击登录页面不刷新然后利用ajax提交到后台程序进行判断,如果登录成功返回真或相关用户信息,这样就实现了用户无刷新登录效果了。php Jquery 无刷新登录,自己写的一个很简单的
加了一个判断就是如果是已经登录的,刷新后还是显示的登录状态
登录页面文件
html页面
代码如下 | 复制代码 |
<script type="text/javascript" src="jquery-1.4.3.js" mce_src="jquery-1.4.3.js"></script> <script type="text/javascript"> $(document).ready(function(){ //DOM的onload事件处理函数 }); function postdata(){ //提交数据函数
|
发送到文件
代码如下 | 复制代码 |
<?php } ?> |
index.php页面
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> jQuery.ajax({ }
} </script> <style> #tick{display:none} </style> <body> Username: <input name="username" id="username" type="text" /> </body> |
php验证页面,此页面接收到jquery ajax post过来的数据进行验证并返回值
代码如下 | 复制代码 |
<?php # FileName="Connection_php_mysql.htm" // if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$username)) { { } |
在PHP处理页面的时候,我们对于字符集的转换都是采用了iconv或者mb_convert等函数,但,这其实是有一个前提的。即我们事先得知道in和out是什么样的编码,我们才能进行正确的转换。
下面这个函数,就可以在不知道源字符串编码的情况下,自动判断其编码并进行转换。虽然只支持UTF8编码和GB2312编码,但对于国内绝大多数网站来说,已经够用了。
代码如下 | 复制代码 |
if((ord($string{$i})&224)==224) if(strtoupper($encoding) == strtoupper($outEncoding)) |
例2
代码如下 | 复制代码 |
|
相关文章
- 有一个项目要获取页面中所有img标签中的图片地址,这里我们使用到了preg_match_all正则函数,然后看我下面的一些参数即可实现了。 例 代码如下 复制代码 ...2016-11-25
- 取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
- 常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
- 网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
- 我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
- 1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
- 这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
- 这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
- c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
- 本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
- 这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
- 这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
- 这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11