查看完整版本: 经典正则表达式

lily 2007-8-2 13:30

经典正则表达式

             <p><P>摘要:收集一些常用的<a href="http://www.phpchina.com/javascript:;" onClick="javascript:tagshow(event, '%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD');" target="_self"><u><strong>正则表达式</strong></u></a>。</P><P>正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。</P><P>匹配中文字符的正则表达式: [\u4e00-\u9fa5]</P><P>匹配双字节字符(包括汉字在内):[^\x00-\xff]</P><P>应用:计算字符串的长度(一个双字节字符长度计2,ascii字符计1)</P><P>string.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}</P><P>匹配空行的正则表达式:\n[\s| ]*\r</P><P>匹配html标记的正则表达式:/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/ </P><P>匹配首尾空格的正则表达式:(^\s*)|(\s*$)</P><P>应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:</P><P>string.prototype.trim = function()<BR>{<BR>return this.replace(/(^\s*)|(\s*$)/g, "");<BR>}</P><P>利用正则表达式分解和转换ip地址:</P><P>下面是利用正则表达式匹配ip地址,并将ip地址转换成对应数值的javascript程序:</P><P>function ip2v(ip)<BR>{<BR>re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配ip地址的正则表达式<BR>if(re.test(ip))<BR>{<BR>return regexp.$1*math.pow(255,3))+regexp.$2*math.pow(255,2))+regexp.$3*255+regexp.$4*1<BR>}<BR>else<BR>{<BR>throw new error("not a valid ip address!")<BR>}<BR>}</P><P>不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:</P><P>var ip="10.100.20.168"<BR>ip=ip.split(".")<BR>alert("ip值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))</P><P>匹配email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*</P><P>匹配网址url的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?</P><P>利用正则表达式去除字串中重复的字符的算法程序:</P><P>var s="abacabefgeeii"<BR>var s1=s.replace(/(.).*\1/g,"$1")<BR>var re=new regexp("["+s1+"]","g")<BR>var s2=s.replace(re,"") <BR>alert(s1+s2) //结果为:abcefgi</P><P>我原来在csdn上发贴寻求一个表达式来实现去除重复字符的<a href="http://www.phpchina.com/javascript:;" onClick="javascript:tagshow(event, '%B7%BD%B7%A8');" target="_self"><u><strong>方法</strong></u></a>,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。</P><P>得用正则表达式从url地址中提取文件名的javascript程序,如下结果为page1</P><P>s="http://www.9499.net/page1.htm"<BR>s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")<BR>alert(s)</P><P>利用正则表达式限制网页表单里的文本框输入内容:</P><P>用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4e00-\u9fa5]/g,'')" onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\u4e00-\u9fa5]/g,''))"</P><P>用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uff00-\uffff]/g,'')" onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\uff00-\uffff]/g,''))"</P><P>用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\d]/g,''))"</P><P>用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\w]/g,'') "onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\d]/g,''))" </P></p>     <center><input type="image" onclick=copyToClipBoard() src="http://www.phpchina.com/images/phpcn_book_bu_tj.gif" border="0"></center>
页: [1]
查看完整版本: 经典正则表达式
PageRank