php python正则表达式手册* ? +问题

随笔分类 - php
php日常笔记
摘要: 近期用tp5框架调取存储过程发现有bug,借鉴了一些官方的函数、以及找了个mysqli的类把存储过程重新写了个扩展类,下面两个类直接放置项目extend目录的stored(这个文件夹名称请按个人习惯命名)目录下,需要注意的是类增加命名空间namespace stored就OK。 1、mysqli类,
别安驹 阅读(60) |
摘要: 1、https://openhome.alipay.com/ 支付宝开放平台并创建应用,审核通过后并签约app支付拿到pid 2、按照官方文档用 【RSA签名验签工具.bat】生成应用公钥和私钥 3、下载支付宝官方demo(https://docs.open.alipay.com/54/106370
别安驹 阅读(189) |
摘要: 平时开发的正则表达式基本都是整理现成的,也没太在意如何编写正则表达式,最近要采集一些数据就大致看了下正则表达式,当时觉得写起来应该没什么问题,WTF当去写的时候脑子一片空白???所以记录下正则的使用过程!! 先来采采自己网站如下图准备采集导航栏的数据,接下来上代码: 此时进行最后一步处理目前的数据接
别安驹 阅读(35) |
摘要: 模板处理, 可以参考 checkbox 的。 注:edit 方法的 基本一样,需要先把已有的数据展示出来,绑定双击事件,删除图片 需要先绑定给已经展示出来的图片, uploadPicture 的callback 中只绑定给了新上传的图片 Application\Admin\Common/function.php function get_attribute_type 中 给$_type 添加...
别安驹 阅读(16) |
摘要: 大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于session这个问题如何处理,说实话不处理session其实也是可以的,但是在实际的情况中会出现一些让用户体验非常蛋疼
别安驹 阅读(1040) |
摘要: 好久没来整理文章了,闲了没事写篇文章记录下php+redis实现商城秒杀功能。 1,安装redis,根据自己的php版本安装对应的redis扩展(此步骤简单的描述一下) 1.1,安装 php_igbinary.dll,php_redis.dll扩展此处需要注意你的php版本如图: 1.2,php.i
别安驹 阅读(11809) |
摘要: ckplayer是个免费,小巧,功能强大的视频播放器,前段时间有个项目需要做个收费视频播放的功能,于是就用了ck,目前项目已经弄完,完美支持pc和手机端的播放,重要的是可以支持清晰度切换,最后加了个是否购买权限的功能,其实总体来说开发难度较小,如果说有难度的话还是要在于处理视频安全性上下些功夫,加密
别安驹 阅读(2598) |
摘要: 数据处理端就正常的接收参数查询数据然后返回json前台处理
别安驹 阅读(110) |
摘要: 没事写个日常项目中开发的一些小问题总结个笔记: 1、empty的使用: 可能新手在开发中或多或少的会遇到这个问题,在if判断的时候empty使用比较多,但要注意empty的参数只能为变量,他不接受处理任何的返回值,代码如下: 2、\n , \r ,\t 在php中的使用必须是双引号才会达到换行和制表
别安驹 阅读(41) |
摘要: 大型项目对于开发前要做的工作可谓是重中之重,分析需求,项目架构,每一步都至关重要,开发流程也必须要规范,所涉及的设计模式或者一些新技术都是必不可少的,看看下面这张图:
别安驹 阅读(39) |
别安驹 阅读(155) |
摘要: 可能比较少的项目用会用到云支付,我之前有个项目就用这个支付,相对于微信支付和支付宝支付他名气太小了,但是很多支付宝或者微信审核不下来就回选择这种支付方式,总体开发比较简单。云支付官网是这么说的“云支付是国内最大的第三方支付接口整合平台,它集成了支付宝,微信,银联支付接口,网银支付等国内著名第三方支付
别安驹 阅读(338) |
摘要: 阿里大鱼 http://www.alidayu.com/ 的短信接口总体是不错的,别安驹个人认为不管是从性价比还是稳定性上都是跟同类的短信接口好些,毕竟是大公司的东西不会差到哪去。下面把之前开发的短信接口做个整理。 1,登陆阿里大鱼的管理中心新增自己的应用,然后使用什么模板请提交审核,此处不做多说。
别安驹 阅读(1146) |
摘要: 微信公众号根据粉丝当前位置匹配附近几公里范围的数据,首先微信公众号开启获取地理位置的接口权限。 1,Jssdk类包的引入Jssdk.class.php生成注册微信官方分享按钮的权限参数,上篇文章已经提过核心包文件直接从那复制即可,传送 2,前台页面的微信授权菜单,获取地理位置返回的数据: 获取当前粉
别安驹 阅读(487) |
摘要: 微信分享对接php项目: 做微信分享开发要注意所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名” 1,Jssdk类包的引入Jssdk.class.php生成注册微信官方分享按钮的权限参数,代码如下: 2,引入微信官
别安驹 阅读(2829) |
摘要: 1,首先安装xdebug插件 传送门 2,配置php.ini文件如下:
别安驹 阅读(145) |
摘要: 1、整合初步工作: 1,安装Ucenter,完成后添加应用,填写要对接的网站地址 2,api , uc_client目录放置对接项目的根目录 3,通信对接,新建Ucenter组,confi文件填写在ucenter添加应用后生成的配置文件复制放入当前组的config.php文件 新建Api目录放置通信
别安驹 阅读(682) |
摘要: 针对淘宝的数据采集写了个简单的示例,但是最好的还是要用淘宝api去获取信息这个是比较正规的
别安驹 阅读(52) |
摘要: 首先看微信官方的说法: 当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权), 微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据 包来发送消息给普通用户,在48小时内
别安驹 阅读(448) |
摘要: 在来一发zendstudio的常用快捷键整理,今天心情不错哈哈 Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以
别安驹 阅读(911) |
摘要: 整理个经常用的强制下载文件的函数,之前就说把一些常用的东西整理出来结果老是没时间,最近陆续把这些东西整理下。
别安驹 阅读(51) |
摘要: 性能是网站运行是否良好的关键因素, 网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好的职业素养。 如何优化PHP性能呢?一、变量(重要) 1)、 变量大小,注意变量大小是节约内存的最有效手段,对于来自用户表单、数据库和文件缓存...
别安驹 阅读(43) |
摘要: 61 \n 匹配一个换行符。等价于 \x0a 和 \cJ。62 \r 匹配一个回车符。等价于 \x0d 和 \cM。63 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。64 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。65 \t...
别安驹 阅读(89) |
摘要: 电子邮件:/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/变量:/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/基于php常用正则表达式的整理汇总1 /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w...
别安驹 阅读(104) |
摘要: ***********【mysql 存储过程和触发器 -- 别安驹】*********************1、什么情况下使用存储过程?完成一些比较麻烦的逻辑,比如多表在mysql端的cpu很空闲的情况下,用存储过程是不错的选择,1.1、简单的存储过程示例:简单写入DELIMITER $$USE ...
别安驹 阅读(78) |
摘要: 最近有个朋友说他们现在在用Phalcon框架开发项目,明显感觉性能有很大的提升,所有着手学习下这个高性能框架,网上是这样说的“虽然以C语言编写达到较高的效能,但相对的一项缺点就是在服务器上必须拥有管理员权限才能够安装,因此一般的共享主机将无法安装Phalcon。Phalcon是一套实现MVC架构的高...
别安驹 阅读(68) |15:32//截取中间字符串的方法preg_match('/(?:ello)(.*)/', 'hello biafra', $match);print_r($match);Array(
[0] =& ello biafra
[1] =& biafra)preg_match('/(ello)(.*)/', 'hello biafra', $match);print_r($match);Array(
[0] =& ello biafra
[1] =& ello
[2] =& biafra)// 取得QQ号function getQQ($text){if (ereg ("([0-9]{5,9})", $text, $regs)) {
return $regs[1];
echo "QQ号无效!";
}}//分析&img&的方法:&?php$content='asdfadfasdfsdf&img src="../../img/sdd1PGmffX.jpg"&asdfasdfasdf&img src="../../img/2007030asdf23211PGmffX.jpg"&&img src="../../img/asdfGmffX.jpg"&asdfasdfasdfasdfasdf';$search="/&img src=(.+?)&/is";$re=array();$match=preg_match_all($search,$content,$re);$count=count($re[0]);for ($i=0;$i&=$$i++){echo $re[0][$i];}//分析域名的正则表达式$referer = preg_replace("/https?:\/\/([^\/]+).*/i", "\\1", $referer);$referer = str_replace("www.", "", $referer);//ubb标签分析的正则表达式&?php$content="[img]天涯风云[/img]";$content = eregi_replace("\\[img\\]([^\\[]*)\\[/img\\]","\\1是个笨蛋!",$content);echo $?&//QQ论坛偷图片的方法(天涯风云的网址是:捌陆儿们儿们点抠门点屎硬,欢迎常来坐坐!!)&?$pathOrUrl='http://bbs.qq.com/allphoto.shtml?url=http://aa.up.topzj.com/data/aa/78/21/6/a/07/01/06/_jCqzyK9eyD7H.jpg" target=_blank';preg_match('/(?:shtml\?url=)(.*)(\" target=_blank$)/', $pathOrUrl, $match);echo $match[1];?&//分析链接id...&?$str="&td&feicemc.php?id=fdsfds&str=33333dd&/td&";preg_match("/str=(.+)&\/td&/isU",$str,$out);
echo $out[1];?&匹配中文字符的正则表达式: [\u4e00-\u9fa5]   匹配双字节字符(包括汉字在内): [^\x00-\xff]   应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").}   匹配空行的正则表达式: \n[\s| ]*\r   匹配HTML标记的正则表达式: /&(.*)&.*&\/&|&(.*) \/&/   匹配首尾空格的正则表达式: (^\s*)|(\s*$)   应用:JavaScript中没有像VBscript那样的trim函数,我们就可以利用这个表达式来实现,如下: String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }   利用正则表达式分解和转换IP地址:   下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function IP2V(ip) { re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式 if(re.test(ip)) { return RegExp.*Math.pow(255,3))+RegExp.*Math.pow(255,2))+RegExp.*255+RegExp.*1 } else { throw new Error("Not a valid IP address!") } }   不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: var ip="10.100.20.168" ip=ip.split(".") alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))   匹配Email地址的正则表达式: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*   匹配网址URL的正则表达式: http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?   利用正则表达式去除字串中重复的字符的算法程序: var s="abacabefgeeii" var s1=s.replace(/(.).*/g,"") var re=new RegExp("["+s1+"]","g") var s2=s.replace(re,"") alert(s1+s2) //结果为:abcefgi   用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1 s="http://www.9499.net/page1.htm" s=s.replace(/(.*\/)([^\.]+).*/ig,"") alert(s)   利用正则表达式限制网页表单里的文本框输入内容:   用正则表达式限制只能输入中文: onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="cliPBoardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"   用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"   用正则表达式限制只能输入数字: onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"   用正则表达式限制只能输入数字和英文: onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"在PHP中正则表达式用于复杂字符串的处理。所支持的正则表达式如下:ereg()ereg_replace()eregi()eregi_replace()split()(1)ereg,eregi这是正规表达式匹配函数,前者是大小写有关匹配,后者则是无关的.用法:ereg(正规表达式,字符串,[匹配部分数组名]);PHP3.0中的正规表达式大体类似于grep中用的.(2)ereg_replace,eregi_replace这些是替换函数.用法:ereg_replace(正规表达式,替换串,原字符串);字符串处理函数中有一个strtr,是"翻译"函数,类似于Perl中的tr/.../.../,用法:strtr(字符串,"从","到");例如:strtr("aaabb","ab","cd")返回"cccdd".(3)split与explode函数有些类似,但这次可以在匹配某正规表达式的地方分割字符串.用法:split(正规表达式,字符串,[取出前多少项]);这些函数都使用正则字符串做为第一个参数。PHP使用Posix 1003.2标准所定义的扩展正则字符串。要查考Posix正则表达式的完整描述请看PHP软件包中regex目录下的man页。Regular expression examples:ereg("abc",$string);/* Returns true if "abc" is found anywhere in $string. */ereg("^abc",$string);/* Returns true if "abc" is found at the beginning of $string. */ereg("abc$",$string);/* Returns true if "abc" is found at the end of $string. */eregi("(ozilla.[23]|MSIE.3)",$HTTP_USER_AGENT);/* Returns true if client browser is Netscape 2, 3 or MSIE 3. */ereg("([[:alnum:][:alnum:]]+) ([[:alnum:]]+)",$string,$regs);/* Places three space separated words into $regs[1], $regs[2] and $regs[3]. */ereg_replace("^","",$string);/* Put a tag at the beginning of $string. */ereg_replace("$","",$string);/* Put a tag at the end of $string. */ereg_replace("n","",$string);/* Get rid of any carriage return characters in $string. */PHP 的 POSIX 正则表达式实例讲解&?php// Title
: PHP 的 POSIX 正则表达式实例讲解// Author
: Stangly.Wrong// Function myEreg($p, $s, $preg)// 可以通过对 $preg 设置决定是否采用 POSIX 还是 兼容perl 的正则匹配// 本文所采用的ereg()函数对大小定敏感 如果不想去区分大小写,// 则可以使用 eregi() 函数去替代 ereg() 函数// 如果匹配成功,则输出 Result is : True// 否则输出 Result is : False$title_prefix = ''''例 '''';$call_num = 1;$title_suffix = ''''&br /&'''';function myEreg( $p, $s, $preg = FALSE ){
global $call_num, $title_prefix, $title_
echo $title_prefix.$call_num.$title_
$call_num++;
$function_name = ( $preg ) ? ''''preg_match'''' : ''''ereg'''' ;
echo "\$p = \"$p\" &br /&";
echo "\$s = \"$s\" &br /&";
echo "Call function is : $function_name(\$p, \$s) &br /&";
if ( $function_name($p, $s) )
echo "Result is : True &br /&&br /&\r\n";
echo "Result is : False &br /&&br /&\r\n";
return T}// -----------------------------------------------------------------// 学习开始 --------------------------------------------------------// -----------------------------------------------------------------// 最简单的一种匹配模式// 从 $s 中寻找 $p 字符串// 例 1 匹配失败 $p 出现在 $s 中$p = ''''jear'''';$s = ''''I love jear forevery!'''';myEreg($p, $s);// -----------------------------------------------------------------// 匹配特殊字符 比如 $ . ^ 等,d_无育|]E[aC)%c?.Eug,2C提$国$0x0AwXoyIixp育E垠%属于正则表达式的相关字符// 使用 对这些字符进行转义// 例 2 本例匹配将成功,如果剔除 将失败$p = ''''\$100'''';$s = ''''I want lend jear $100.'''';myEreg($p, $s);// 此处将直接使用 $ 去匹配// 例 3 匹配失败$p = ''''$100'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 ^ 匹配// ^ 指出必须与字符串的开头字符串匹配// 例 4 本例匹配失败 $p 虽然出现在 $s 中,但不是在开头位置$p = ''''^jear'''';myEreg($p, $s);// 例 5 本例匹配成功,$p 在 $s 的开头位置$s = ''''jear is my good friend !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 $ 匹配// $ 指出必须表示它必须与字符串的末尾字符串匹配// 例 6 本例匹配失败 $p 不是在 $s 的尾部出现$p = ''''jear$'''';myEreg($p, $s);// 例 7 本例匹配成功,$p 在 $s 的尾部出现$s = ''''I love jear'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 . 匹配// . 可以匹配任意单个字符// 例 8 本例匹配成功$p = ''''je.r'''';$s = ''''jear'''';myEreg($p, $s);// 例 9 匹配失败$s = ''''jer'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 [] 预定义一个类进行匹配// 仔细观察 $s 的书写,[g网4^6ajqElB,jnmd与 $p 比较// 例 10 匹配成功$p = ''''j[eE]ar'''';$s = ''''I love jear.'''';myEreg($p, $s);// 例 11 匹配成功$s = ''''I love jEar'''';myEreg($p, $s);//例 12 匹配失败 因为 jaar 不符合 $p 所定义的一个类串$s = ''''I love jaar.'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 [^] 去排除一个预定义的类// 例 13 匹配成功// 在进行匹配时,$p 规定了 在 j 字母后只要不出现 abcd ,同时尾部是以// ar 结束的,即匹配成功$p = ''''j[^abcd]ar'''';$s = ''''I love jear just love my self !'''';myEreg($p, $s);// 例 14 匹配失败$s = ''''I love jaar !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 - 方式去在 [] 类中 定义一个范围// 例 15 匹配成功 因为 预定义类指出字符范围为 0 到 6,而 3th 的 th 前// 数字 3 处在这一类范围内$p = ''''[0-6]th'''';$s = ''''This is the 3th month that i gets along with jear!'''';myEreg($p, $s);// 例 16 匹配失败 自己分析一下原因$s = ''''This is the 9th month that i gets along with jear!'''';myEreg($p, $s);// 例 17 匹配成功 使用 ^ 类似于取反运算$p = ''''[^0-6]'''';myEreg($p, $s);// 例 18 匹配成功$p = ''''je[a-z]r'''';$s = ''''I love jear!'''';myEreg($p, $s);// 例 19 匹配成功 解决大小写匹配$p = ''''je[a-zA-Z]r'''';$s = ''''I love jeAr !''''; // or $s = ''''I love jear !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 | 做选择性匹配// | 可以去做一个选择性的匹配.// 例 20 匹配成功$p = ''''jear|cxj|cat'''';$s = ''''I love jear !'''';myEreg($p, $s);// 例 21 匹配成功$s = ''''I love cxj !'''';myEreg($p, $s);// 例 22 匹配成功 组合 [] - 方式去匹配$p = ''''^([[a-zA-Z]ear)'''';$s = ''''Jear is my good friend !'''';myEreg($p, $s);// 例 23 匹配成功$s = ''''0ear is my good firend !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 + 号去匹配重复字符,理IS9{ph育+4络}1{供Q提6提X.M*z育u_$p重复次最少是一次// 例 24 匹配成功 Be+p 指定对于e字符可以最少重复一次,最多重复次不限$p = ''''Be+p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 25 匹配成功$s = ''''Beeeep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 ? 号去匹配重复字符, 与 + 号类似,但不规定重复最少次数,// 规定了最多只能重复一次// 例 26 匹配成功$p = ''''Be?p'''';$s = ''''Bp'''';myEreg($p, $s);// 例 27 匹配失败 因为 e 出现了两次$p = ''''Be?p'''';$s = ''''Beep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 * 号匹配重复字符, 与 + 号类似, 没有规定最少重复次数// 例 28 匹配成功$p = ''''Be*p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 29 匹配成功$p = ''''Be*p'''';$s = ''''Bp'''';myEreg($p, $s);// 例 30 匹配成功$p = ''''Be*p'''';$s = ''''Beeeeeeeeeep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 {n} 号规定出现的具体次数// 例 31 匹配成功 规定 e 字符必须出现两次$p = ''''Be{2}p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 32 匹配失败$s = ''''Beeep'''';myEreg($p, $s);// 例 33 匹配失败$s = ''''Bep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 {n,m} 号规定出现的最少和最大次数// 例 34 匹配成功 规定 e 字符可以不出现在 $s 里,-网业tx专0@DFTj_ 但最多可以出现 2 次$p = ''''Be{0,2}p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 35 匹配成功$s = ''''Bp'''';myEreg($p, $s);// 例 36 匹配失败 e 出现次数为3 次,超过规定的2 次限定$s = ''''Beeep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 {n,} 号规定出现的最少次数,但不规定最多次数// 例 37 匹配成功$p = ''''Be{1,}p'''';$s = ''''Bep'''';myEreg($p, $s);// 例 38 匹配成功$p = ''''Be{1,}p'''';$s = ''''Beeeeeep'''';myEreg($p, $s);// 例 39 匹配失败 e 没有在 $s 中出现,GQ~}QPD&_udz-|供z件@9l']J{WVH*qV而规定必须要出现 1 次$p = ''''Be{1,}p'''';$s = ''''Bp'''';myEreg($p, $s);// ----------------------------------------------------------------// () 的使用 联系以下实例 将多个正则联系起来,作为一个单独个体对待// 例 41 匹配成功$p = ''''^(good|best)'''';$s = ''''good'''';myEreg($p, $s);// 例 42 匹配成功$s = ''''best'''';myEreg($p, $s);// ----------------------------------------------------------------// 更多的示例// ----------------------------------------------------------------// 例 43 匹配日期示例
没有规定检查日期的合法性$p = ''''[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}'''';$s = '''''''';myEreg($p, $s);?&正则表达式判断email和URL&body onload="f.a.select();"&&?php echo 'a:'.htmlspecialchars($a);echo '&br&a1:';$a1 = eregi_replace('(^[_.][:alnum:]-]+@([[:alnum:]][[:alnum:]-]*.)+[[:alpha:]]{2,3}$)',' &a href="mailto:\1"&\1&/a& ', $a) ;echo htmlspecialchars($a1);echo "&br&a1:$a1";echo '&br&a2:';$a2 = eregi_replace('([[:alnum:]]+://([[:alnum:]][[:alnum:]-]*\.)+[[:alpha:]]{2,3}([#\?/\\][^#\?/\\][:space:]][^[:space:]]*)?)',
'&a href="\1" target="_blank"&\1&/a&', $a); echo htmlspecialchars($a2);echo "&br&a2:$a2";// eregi('^[_.][:alnum:]-]+@([[:alnum:]][[:alnum:]-]*\.)+[[:alpha:]]{2,3}$',$a) or die("not a email");?&&form name="f"&&input name="a" value="&?php echo $a; ?&"&&input type="submit" &&/form&&/body&
/*JavaScript表单验证表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。 Validator目前可实现的验证类型有: 1.是否为空;2.中文字符;3.双字节字符4.英文;5.数字;6.整数;7.实数;8.Email地址;9.使用HTTP协议的网址;10.电话号码;11.货币;12.手机号码;13.邮政编码;14.身份证号码(1.05增强);15.QQ号码;16.日期;17.符合安全规则的密码;18.某项的重复值;19.两数的关系比较;20.判断输入值是否在(n, m)区间;21.输入字符长度限制(可按字节比较);22.对于具有相同名称的单选按钮的选中判断;23.限制具有相同名称的多选按钮的选中数目;24.自定义的正则表达式验证;25.文件上传格式过滤(1.04新增)。 更新历史:1.01 修正对12月份的日期验证(感谢 flylg999 )1.03 修正Range验证类型时将数字当字符串比较的bug(感谢 cncom 和 xtlhnhbb ) 修正日期验证(感谢 Papsam ) 增加Username验证类型 增加对Phone验证类型时支持分机号1.04 增加文件格式的过滤,用于上传时限制上传的文件格式1.05增强对身份证号码的验证运行环境(客户端): 在Windows Server 2003下用IE6.0+SP1和Mozilla Firefox 1.0测试通过;在Lunix RedHat 9下的Netscape测试通过; Validator 完整代码:*/&script&/*************************************************Validator v1.05code by 我佛山人[email=][/email]*************************************************/Validator = {Require : /.+/,Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^&&\"\"])*$/,IdCard : "this.IsIdCard(value)",Currency : /^\d+(\.\d+)?$/,Number : /^\d+$/,Zip : /^[1-9]\d{5}$/,QQ : /^[1-9]\d{4,8}$/,Integer : /^[-\+]?\d+$/,Double : /^[-\+]?\d+(\.\d+)?$/,English : /^[A-Za-z]+$/,Chinese : /^[\u0391-\uFFE5]+$/,Username : /^[a-z]\w{3,}$/i,UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}&&\?\\\/\'\"]*)|.{0,5})$|\s/,IsSafe : function(str){return !this.UnSafe.test(str);},SafeString : "this.IsSafe(value)",Filter : "this.DoFilter(value, getAttribute('accept'))",Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))",LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",Range : "getAttribute('min') & (value|0) && (value|0) & getAttribute('max')",Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",Custom : "this.Exec(value, getAttribute('regexp'))",Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",ErrorItem : [document.forms[0]],ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"],Validate : function(theForm, mode){var obj = theForm || event.srcEvar count = obj.elements.this.ErrorMessage.length = 1;this.ErrorItem.length = 1;this.ErrorItem[0] =for(var i=0;i&i++){with(obj.elements[i]){var _dataType = getAttribute("dataType");if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")this.ClearState(obj.elements[i]);if(getAttribute("require") == "false" && value == "")switch(_dataType){case "IdCard" :case "Date" :case "Repeat" :case "Range" :case "Compare" :case "Custom" :case "Group" : case "Limit" :case "LimitB" :case "SafeString" :case "Filter" :if(!eval(this[_dataType])) {this.AddError(i, getAttribute("msg"));}default :if(!this[_dataType].test(value)){this.AddError(i, getAttribute("msg"));}}}}if(this.ErrorMessage.length & 1){mode = mode || 1;var errCount = this.ErrorItem.switch(mode){case 2 :for(var i=1;i&errCi++)this.ErrorItem[i].style.color = "red";case 1 :alert(this.ErrorMessage.join("\n"));this.ErrorItem[1].focus();case 3 :for(var i=1;i&errCi++){try{var span = document.createElement("SPAN");span.id = "__ErrorMessagePanel";span.style.color = "red";this.ErrorItem[i].parentNode.appendChild(span);span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");}catch(e){alert(e.description);}}this.ErrorItem[1].focus();default :alert(this.ErrorMessage.join("\n"));}}},limit : function(len,min, max){min = min || 0;max = max || Number.MAX_VALUE;return min &= len && len &=},LenB : function(str){return str.replace(/[^\x00-\xff]/g,"**").},ClearState : function(elem){with(elem){if(style.color == "red")style.color = "";var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];if(lastNode.id == "__ErrorMessagePanel")parentNode.removeChild(lastNode);}},AddError : function(index, str){this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" +},Exec : function(op, reg){return new RegExp(reg,"g").test(op);},compare : function(op1,operator,op2){switch (operator) {case "NotEqual":return (op1 != op2);case "GreaterThan":return (op1 & op2);case "GreaterThanEqual":return (op1 &= op2);case "LessThan":return (op1 & op2);case "LessThanEqual":return (op1 &= op2);default:return (op1 == op2); }},MustChecked : function(name, min, max){var groups = document.getElementsByName(name);var hasChecked = 0;min = min || 1;max = max || groups.for(var i=groups.length-1;i&=0;i--)if(groups[i].checked) hasChecked++;return min &= hasChecked && hasChecked &=},DoFilter : function(input, filter){return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);},IsIdCard : function(number){var date, Ai;var verify = "10x";var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);if(re == null)if(re[1] &= area.length || area[re[1]] == "")if(re[2].length == 12){Ai = number.substr(0, 17);date = [re[9], re[10], re[11]].join("-");}else{Ai = number.substr(0, 6) + "19" + number.substr(6);date = ["19" + re[4], re[5], re[6]].join("-");}if(!this.IsDate(date, "ymd"))var sum = 0;for(var i = 0;i&=16;i++){sum += Ai.charAt(i) * Wi[i];}Ai += verify.charAt(sum%11);return (number.length ==15 || number.length == 18 && number == Ai);},IsDate : function(op, formatString){formatString = formatString || "ymd";var m, year, month,switch(formatString){case "ymd" :m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));if(m == null )day = m[6];month = m[5]*1;year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));case "dmy" :m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));if(m == null )day = m[1];month = m[3]*1;year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));default :}if(!parseInt(month))month = month==0 ?12:var date = new Date(year, month-1, day);return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());function GetFullYear(y){return ((y&30 ? "20" : "19") + y)|0;}}}&/script&/*使用方法:验证表单 在表单中加上onsubmit事件,触发调用Validaotor的Validate方法,代码示例:CODE:&form action="your_application_page" method="post"&... ...&/form& //---------------------Validate方法有两个可选参数,第一个为表单对象,如果是写在表单的onsubmit事件中,可以用this指代当前表单,默认值为事件源对象;第二个参数为错误提示模式,可选值为1,2和3,默认值为1。省略第二个参数时相当于使用Validate(objForm,1),省略第一个参数时相当于Validate(this,1)。注意,不可以省略第一个参数而只写第二个参数,Validate(,2)是错误的用法。////////////具体的实例1. 验证输入是否Email地址&input name="Email" dataType="Email" msg="信箱格式不正确"& 2. 如果对Email地址有特殊的限制的话&input name="Email" dataType="Custom" regexp="^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$" msg="信箱格式不正确"&3. Range 这个范围的使用方法&input name="Range"
dataType="Range" msg="超出了范围18 - 28 " min="18" max="28"&[说明]Validator的必要属性是dataType和msg(区分大小写),然后根据dataType值的不同,会引发出不同的属性。因为程序中已经集成Email地址格式的正则,所以可以直接用dateType="Email"进行验证,如果对Email地址的格式有不同的限制,可以用自定义的正则来验证(参考第二段代码)。如果在使用过程中有发现其他问题或者对使用方法有疑问可以到Javascript论坛来讨论,URL:[url=http://www.javascript.com.cn/bbs/htm_data/10/.html]http://www.javascript.com.cn/bbs/htm_data/10/.html[/url) ([[:alnum:]]+) ([[:alnum:]]+)",$string,$regs);/* Places three space separated words into $regs[1], $regs[2] and $regs[3]. */ereg_replace("^","",$string);/* Put a tag at the beginning of $string. */ereg_replace("$","",$string);/* Put a tag at the end of $string. */ereg_replace("n","",$string);/* Get rid of any carriage return characters in $string. */PHP 的 POSIX 正则表达式实例讲解&?php// Title
: PHP 的 POSIX 正则表达式实例讲解// Author
: Stangly.Wrong// Function myEreg($p, $s, $preg)// 可以通过对 $preg 设置决定是否采用 POSIX 还是 兼容perl 的正则匹配// 本文所采用的ereg()函数对大小定敏感 如果不想去区分大小写,// 则可以使用 eregi() 函数去替代 ereg() 函数// 如果匹配成功,则输出 Result is : True// 否则输出 Result is : False$title_prefix = ''''例 '''';$call_num = 1;$title_suffix = ''''&br /&'''';function myEreg( $p, $s, $preg = FALSE ){
global $call_num, $title_prefix, $title_
echo $title_prefix.$call_num.$title_
$call_num++;
$function_name = ( $preg ) ? ''''preg_match'''' : ''''ereg'''' ;
echo "\$p = \"$p\" &br /&";
echo "\$s = \"$s\" &br /&";
echo "Call function is : $function_name(\$p, \$s) &br /&";
if ( $function_name($p, $s) )
echo "Result is : True &br /&&br /&\r\n";
echo "Result is : False &br /&&br /&\r\n";
return T}// -----------------------------------------------------------------// 学习开始 --------------------------------------------------------// -----------------------------------------------------------------// 最简单的一种匹配模式// 从 $s 中寻找 $p 字符串// 例 1 匹配失败 $p 出现在 $s 中$p = ''''jear'''';$s = ''''I love jear forevery!'''';myEreg($p, $s);// -----------------------------------------------------------------// 匹配特殊字符 比如 $ . ^ 等,d_无育|]E[aC)%c?.Eug,2C提$国$0x0AwXoyIixp育E垠%属于正则表达式的相关字符// 使用 对这些字符进行转义// 例 2 本例匹配将成功,如果剔除 将失败$p = ''''\$100'''';$s = ''''I want lend jear $100.'''';myEreg($p, $s);// 此处将直接使用 $ 去匹配// 例 3 匹配失败$p = ''''$100'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 ^ 匹配// ^ 指出必须与字符串的开头字符串匹配// 例 4 本例匹配失败 $p 虽然出现在 $s 中,但不是在开头位置$p = ''''^jear'''';myEreg($p, $s);// 例 5 本例匹配成功,$p 在 $s 的开头位置$s = ''''jear is my good friend !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 $ 匹配// $ 指出必须表示它必须与字符串的末尾字符串匹配// 例 6 本例匹配失败 $p 不是在 $s 的尾部出现$p = ''''jear$'''';myEreg($p, $s);// 例 7 本例匹配成功,$p 在 $s 的尾部出现$s = ''''I love jear'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 . 匹配// . 可以匹配任意单个字符// 例 8 本例匹配成功$p = ''''je.r'''';$s = ''''jear'''';myEreg($p, $s);// 例 9 匹配失败$s = ''''jer'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 [] 预定义一个类进行匹配// 仔细观察 $s 的书写,[g网4^6ajqElB,jnmd与 $p 比较// 例 10 匹配成功$p = ''''j[eE]ar'''';$s = ''''I love jear.'''';myEreg($p, $s);// 例 11 匹配成功$s = ''''I love jEar'''';myEreg($p, $s);//例 12 匹配失败 因为 jaar 不符合 $p 所定义的一个类串$s = ''''I love jaar.'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 [^] 去排除一个预定义的类// 例 13 匹配成功// 在进行匹配时,$p 规定了 在 j 字母后只要不出现 abcd ,同时尾部是以// ar 结束的,即匹配成功$p = ''''j[^abcd]ar'''';$s = ''''I love jear just love my self !'''';myEreg($p, $s);// 例 14 匹配失败$s = ''''I love jaar !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 - 方式去在 [] 类中 定义一个范围// 例 15 匹配成功 因为 预定义类指出字符范围为 0 到 6,而 3th 的 th 前// 数字 3 处在这一类范围内$p = ''''[0-6]th'''';$s = ''''This is the 3th month that i gets along with jear!'''';myEreg($p, $s);// 例 16 匹配失败 自己分析一下原因$s = ''''This is the 9th month that i gets along with jear!'''';myEreg($p, $s);// 例 17 匹配成功 使用 ^ 类似于取反运算$p = ''''[^0-6]'''';myEreg($p, $s);// 例 18 匹配成功$p = ''''je[a-z]r'''';$s = ''''I love jear!'''';myEreg($p, $s);// 例 19 匹配成功 解决大小写匹配$p = ''''je[a-zA-Z]r'''';$s = ''''I love jeAr !''''; // or $s = ''''I love jear !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 | 做选择性匹配// | 可以去做一个选择性的匹配.// 例 20 匹配成功$p = ''''jear|cxj|cat'''';$s = ''''I love jear !'''';myEreg($p, $s);// 例 21 匹配成功$s = ''''I love cxj !'''';myEreg($p, $s);// 例 22 匹配成功 组合 [] - 方式去匹配$p = ''''^([[a-zA-Z]ear)'''';$s = ''''Jear is my good friend !'''';myEreg($p, $s);// 例 23 匹配成功$s = ''''0ear is my good firend !'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 + 号去匹配重复字符,理IS9{ph育+4络}1{供Q提6提X.M*z育u_$p重复次最少是一次// 例 24 匹配成功 Be+p 指定对于e字符可以最少重复一次,最多重复次不限$p = ''''Be+p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 25 匹配成功$s = ''''Beeeep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 ? 号去匹配重复字符, 与 + 号类似,但不规定重复最少次数,// 规定了最多只能重复一次// 例 26 匹配成功$p = ''''Be?p'''';$s = ''''Bp'''';myEreg($p, $s);// 例 27 匹配失败 因为 e 出现了两次$p = ''''Be?p'''';$s = ''''Beep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 * 号匹配重复字符, 与 + 号类似, 没有规定最少重复次数// 例 28 匹配成功$p = ''''Be*p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 29 匹配成功$p = ''''Be*p'''';$s = ''''Bp'''';myEreg($p, $s);// 例 30 匹配成功$p = ''''Be*p'''';$s = ''''Beeeeeeeeeep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 {n} 号规定出现的具体次数// 例 31 匹配成功 规定 e 字符必须出现两次$p = ''''Be{2}p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 32 匹配失败$s = ''''Beeep'''';myEreg($p, $s);// 例 33 匹配失败$s = ''''Bep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 {n,m} 号规定出现的最少和最大次数// 例 34 匹配成功 规定 e 字符可以不出现在 $s 里,-网业tx专0@DFTj_ 但最多可以出现 2 次$p = ''''Be{0,2}p'''';$s = ''''Beep'''';myEreg($p, $s);// 例 35 匹配成功$s = ''''Bp'''';myEreg($p, $s);// 例 36 匹配失败 e 出现次数为3 次,超过规定的2 次限定$s = ''''Beeep'''';myEreg($p, $s);// -----------------------------------------------------------------// 使用 {n,} 号规定出现的最少次数,但不规定最多次数// 例 37 匹配成功$p = ''''Be{1,}p'''';$s = ''''Bep'''';myEreg($p, $s);// 例 38 匹配成功$p = ''''Be{1,}p'''';$s = ''''Beeeeeep'''';myEreg($p, $s);// 例 39 匹配失败 e 没有在 $s 中出现,GQ~}QPD&_udz-|供z件@9l']J{WVH*qV而规定必须要出现 1 次$p = ''''Be{1,}p'''';$s = ''''Bp'''';myEreg($p, $s);// ----------------------------------------------------------------// () 的使用 联系以下实例 将多个正则联系起来,作为一个单独个体对待// 例 41 匹配成功$p = ''''^(good|best)'''';$s = ''''good'''';myEreg($p, $s);// 例 42 匹配成功$s = ''''best'''';myEreg($p, $s);// ----------------------------------------------------------------// 更多的示例// ----------------------------------------------------------------// 例 43 匹配日期示例
没有规定检查日期的合法性$p = ''''[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}'''';$s = '''''''';myEreg($p, $s);?&正则表达式判断email和URL&body onload="f.a.select();"&&?php echo 'a:'.htmlspecialchars($a);echo '&br&a1:';$a1 = eregi_replace('(^[_.][:alnum:]-]+@([[:alnum:]][[:alnum:]-]*.)+[[:alpha:]]{2,3}$)',' &a href="mailto:\1"&\1&/a& ', $a) ;echo htmlspecialchars($a1);echo "&br&a1:$a1";echo '&br&a2:';$a2 = eregi_replace('([[:alnum:]]+://([[:alnum:]][[:alnum:]-]*\.)+[[:alpha:]]{2,3}([#\?/\\][^#\?/\\][:space:]][^[:space:]]*)?)',
'&a href="\1" target="_blank"&\1&/a&', $a); echo htmlspecialchars($a2);echo "&br&a2:$a2";// eregi('^[_.][:alnum:]-]+@([[:alnum:]][[:alnum:]-]*\.)+[[:alpha:]]{2,3}$',$a) or die("not a email");?&&form name="f"&&input name="a" value="&?php echo $a; ?&"&&input type="submit" &&/form&&/body&
/*JavaScript表单验证表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。 Validator目前可实现的验证类型有: 1.是否为空;2.中文字符;3.双字节字符4.英文;5.数字;6.整数;7.实数;8.Email地址;9.使用HTTP协议的网址;10.电话号码;11.货币;12.手机号码;13.邮政编码;14.身份证号码(1.05增强);15.QQ号码;16.日期;17.符合安全规则的密码;18.某项的重复值;19.两数的关系比较;20.判断输入值是否在(n, m)区间;21.输入字符长度限制(可按字节比较);22.对于具有相同名称的单选按钮的选中判断;23.限制具有相同名称的多选按钮的选中数目;24.自定义的正则表达式验证;25.文件上传格式过滤(1.04新增)。 更新历史:1.01 修正对12月份的日期验证(感谢 flylg999 )1.03 修正Range验证类型时将数字当字符串比较的bug(感谢 cncom 和 xtlhnhbb ) 修正日期验证(感谢 Papsam ) 增加Username验证类型 增加对Phone验证类型时支持分机号1.04 增加文件格式的过滤,用于上传时限制上传的文件格式1.05增强对身份证号码的验证运行环境(客户端): 在Windows Server 2003下用IE6.0+SP1和Mozilla Firefox 1.0测试通过;在Lunix RedHat 9下的Netscape测试通过; Validator 完整代码:*/&script&/*************************************************Validator v1.05code by 我佛山人[email=][/email]*************************************************/Validator = {Require : /.+/,Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^&&\"\"])*$/,IdCard : "this.IsIdCard(value)",Currency : /^\d+(\.\d+)?$/,Number : /^\d+$/,Zip : /^[1-9]\d{5}$/,QQ : /^[1-9]\d{4,8}$/,Integer : /^[-\+]?\d+$/,Double : /^[-\+]?\d+(\.\d+)?$/,English : /^[A-Za-z]+$/,Chinese : /^[\u0391-\uFFE5]+$/,Username : /^[a-z]\w{3,}$/i,UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}&&\?\\\/\'\"]*)|.{0,5})$|\s/,IsSafe : function(str){return !this.UnSafe.test(str);},SafeString : "this.IsSafe(value)",Filter : "this.DoFilter(value, getAttribute('accept'))",Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))",LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",Range : "getAttribute('min') & (value|0) && (value|0) & getAttribute('max')",Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",Custom : "this.Exec(value, getAttribute('regexp'))",Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",ErrorItem : [document.forms[0]],ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"],Validate : function(theForm, mode){var obj = theForm || event.srcEvar count = obj.elements.this.ErrorMessage.length = 1;this.ErrorItem.length = 1;this.ErrorItem[0] =for(var i=0;i&i++){with(obj.elements[i]){var _dataType = getAttribute("dataType");if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")this.ClearState(obj.elements[i]);if(getAttribute("require") == "false" && value == "")switch(_dataType){case "IdCard" :case "Date" :case "Repeat" :case "Range" :case "Compare" :case "Custom" :case "Group" : case "Limit" :case "LimitB" :case "SafeString" :case "Filter" :if(!eval(this[_dataType])) {this.AddError(i, getAttribute("msg"));}default :if(!this[_dataType].test(value)){this.AddError(i, getAttribute("msg"));}}}}if(this.ErrorMessage.length & 1){mode = mode || 1;var errCount = this.ErrorItem.switch(mode){case 2 :for(var i=1;i&errCi++)this.ErrorItem[i].style.color = "red";case 1 :alert(this.ErrorMessage.join("\n"));this.ErrorItem[1].focus();case 3 :for(var i=1;i&errCi++){try{var span = document.createElement("SPAN");span.id = "__ErrorMessagePanel";span.style.color = "red";this.ErrorItem[i].parentNode.appendChild(span);span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");}catch(e){alert(e.description);}}this.ErrorItem[1].focus();default :alert(this.ErrorMessage.join("\n"));}}},limit : function(len,min, max){min = min || 0;max = max || Number.MAX_VALUE;return min &= len && len &=},LenB : function(str){return str.replace(/[^\x00-\xff]/g,"**").},ClearState : function(elem){with(elem){if(style.color == "red")style.color = "";var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];if(lastNode.id == "__ErrorMessagePanel")parentNode.removeChild(lastNode);}},AddError : function(index, str){this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" +},Exec : function(op, reg){return new RegExp(reg,"g").test(op);},compare : function(op1,operator,op2){switch (operator) {case "NotEqual":return (op1 != op2);case "GreaterThan":return (op1 & op2);case "GreaterThanEqual":return (op1 &= op2);case "LessThan":return (op1 & op2);case "LessThanEqual":return (op1 &= op2);default:return (op1 == op2); }},MustChecked : function(name, min, max){var groups = document.getElementsByName(name);var hasChecked = 0;min = min || 1;max = max || groups.for(var i=groups.length-1;i&=0;i--)if(groups[i].checked) hasChecked++;return min &= hasChecked && hasChecked &=},DoFilter : function(input, filter){return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);},IsIdCard : function(number){var date, Ai;var verify = "10x";var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);if(re == null)if(re[1] &= area.length || area[re[1]] == "")if(re[2].length == 12){Ai = number.substr(0, 17);date = [re[9], re[10], re[11]].join("-");}else{Ai = number.substr(0, 6) + "19" + number.substr(6);date = ["19" + re[4], re[5], re[6]].join("-");}if(!this.IsDate(date, "ymd"))var sum = 0;for(var i = 0;i&=16;i++){sum += Ai.charAt(i) * Wi[i];}Ai += verify.charAt(sum%11);return (number.length ==15 || number.length == 18 && number == Ai);},IsDate : function(op, formatString){formatString = formatString || "ymd";var m, year, month,switch(formatString){case "ymd" :m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));if(m == null )day = m[6];month = m[5]*1;year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));case "dmy" :m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));if(m == null )day = m[1];month = m[3]*1;year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));default :}if(!parseInt(month))month = month==0 ?12:var date = new Date(year, month-1, day);return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());function GetFullYear(y){return ((y&30 ? "20" : "19") + y)|0;}}}&/script&/*使用方法:验证表单 在表单中加上onsubmit事件,触发调用Validaotor的Validate方法,代码示例:CODE:&form action="your_application_page" method="post"&... ...&/form& //---------------------Validate方法有两个可选参数,第一个为表单对象,如果是写在表单的onsubmit事件中,可以用this指代当前表单,默认值为事件源对象;第二个参数为错误提示模式,可选值为1,2和3,默认值为1。省略第二个参数时相当于使用Validate(objForm,1),省略第一个参数时相当于Validate(this,1)。注意,不可以省略第一个参数而只写第二个参数,Validate(,2)是错误的用法。////////////具体的实例1. 验证输入是否Email地址&input name="Email" dataType="Email" msg="信箱格式不正确"& 2. 如果对Email地址有特殊的限制的话&input name="Email" dataType="Custom" regexp="^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$" msg="信箱格式不正确"&3. Range 这个范围的使用方法&input name="Range"
dataType="Range" msg="超出了范围18 - 28 " min="18" max="28"&[说明]Validator的必要属性是dataType和msg(区分大小写),然后根据dataType值的不同,会引发出不同的属性。因为程序中已经集成Email地址格式的正则,所以可以直接用dateType="Email"进行验证,如果对Email地址的格式有不同的限制,可以用自定义的正则来验证(参考第二段代码)。如果在使用过程中有发现其他问题或者对使用方法有疑问可以到Javascript论坛来讨论,URL:[url=http://www.javascript.com.cn/bbs/htm_data/10/.html]http://www.javascript.com.cn/bbs/htm_data/10/.html[/url]*/
&^[0-9]*[1-9][0-9]*$&   //正整数
&^((-\d+)|(0+))$&   //非正整数(负整数 + 0)
&^-[0-9]*[1-9][0-9]*$&   //负整数...
常用实例匹配中文字符的正则表达式: [\x{4e00}-\x{9fa5}]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记...
PHP正则表达式常用的5种模式修饰符
本文主要讲述的是php慢日志收集至elasticsearch
收集流程:
本文不提供安装教程
主要配置:
Filebeat配置
filebeat 涉及多行配置所以要使用 multi...
现在一搜手机号正则和车牌号正则,都是以前写的
现在手机号更新了177的,147的等等
所以,手机号正则可完善一下:
public static boolean checkmobilePhone...
没有更多推荐了,

我要回帖

更多关于 python正则表达式手册 的文章

 

随机推荐