每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發(fā)
          最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks

          key words:正則表達(dá)式 ?模式匹配 javascript

          摘要:收集一些常用的正則表達(dá)式。

          正則表達(dá)式用于字符串處理,表單驗證等場合,實用高效,但用到時總是不太把握,以致往往要上網(wǎng)查一番。我將一些常用的表達(dá)式收藏在這里,作備忘之用。本貼隨時會更新。

          匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]

          匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

          應(yīng)用:計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)

          String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

          匹配空行的正則表達(dá)式:\n[\s| ]*\r

          匹配HTML標(biāo)記的正則表達(dá)式:/<(.*)>.*<\/\1>|<(.*) \/>/

          匹配首尾空格的正則表達(dá)式:(^\s*)|(\s*$)

          應(yīng)用:javascript中沒有像vbscript那樣的trim函數(shù),我們就可以利用這個表達(dá)式來實現(xiàn),如下:

          String.prototype.trim = function()

          {
          ??? return this.replace(/(^\s*)|(\s*$)/g, "");
          }

          利用正則表達(dá)式分解和轉(zhuǎn)換IP地址:

          下面是利用正則表達(dá)式匹配IP地址,并將IP地址轉(zhuǎn)換成對應(yīng)數(shù)值的javascript程序:

          function IP2V(ip)
          {
          ?re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g? //匹配IP地址的正則表達(dá)式
          if(re.test(ip))
          {
          return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
          }
          else
          {
          ?throw new Error("Not a valid IP address!")
          }
          }

          不過上面的程序如果不用正則表達(dá)式,而直接用split函數(shù)來分解可能更簡單,程序如下:

          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地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

          匹配網(wǎng)址URL的正則表達(dá)式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

          得用正則表達(dá)式從URL地址中提取文件名的javascript程序,如下結(jié)果為page1

          s="http://www.9499.net/page1.htm"
          s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
          alert(s)

          利用正則表達(dá)式限制網(wǎng)頁表單里的文本框輸入內(nèi)容:

          用正則表達(dá)式限制只能輸入中文:onkeyup="value=value.replace(/[^ \u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

          用正則表達(dá)式限制只能輸入全角字符: ?onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

          用正則表達(dá)式限制只能輸入數(shù)字:onkeyup="value=value.replace(/[^ \d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

          用正則表達(dá)式限制只能輸入數(shù)字和英文:onkeyup="value=value.replace (/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

          "^\\d+$"  //非負(fù)整數(shù)(正整數(shù) + 0)
          "^[0-9]*[1-9][0-9]*$"  //正整數(shù)
          "^((-\\d+)|(0+))$"  //非正整數(shù)(負(fù)整數(shù) + 0)
          "^-[0-9]*[1-9][0-9]*$"  //負(fù)整數(shù)
          "^-?\\d+$"    //整數(shù)
          "^\\d+(\\.\\d+)?$"  //非負(fù)浮點數(shù)(正浮點數(shù) + 0)
          "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮點數(shù)
          "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點數(shù)(負(fù)浮點數(shù) + 0)
          "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //負(fù)浮點數(shù)
          "^(-?\\d+)(\\.\\d+)?$"  //浮點數(shù)
          "^[A-Za-z]+$"  //由26個英文字母組成的字符串
          "^[A-Z]+$"  //由26個英文字母的大寫組成的字符串
          "^[a-z]+$"  //由26個英文字母的小寫組成的字符串
          "^[A-Za-z0-9]+$"  //由數(shù)字和26個英文字母組成的字符串
          "^\\w+$"  //由數(shù)字、26個英文字母或者下劃線組成的字符串
          "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
          "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

          "^[A-Za-z0-9_]*$"

          posted on 2006-08-29 15:02 Alex 閱讀(596) 評論(1)  編輯  收藏 所屬分類: web技術(shù)

          評論

          # re: [zt]經(jīng)典正則表達(dá)式 2007-12-18 12:36 大蘿卜
          錯誤的蠻多的.
          歪打正著的也有一些.
          比如ip的,每個區(qū)段是0-255,這樣每個小段的表達(dá)式為([012]?\d{1,2}),更糟糕的是,對于進(jìn)制的理解,如果要將地址轉(zhuǎn)化為數(shù)字,每個區(qū)段的進(jìn)制,應(yīng)該是不小于256的表達(dá),否則的話,如lz這樣,1.255 == 2.0,10進(jìn)制的每個位置上,沒有大于9的表達(dá),16進(jìn)制上的每位,也沒大于15的表達(dá);
          漢字的編碼區(qū)段,大概是那個范圍,但確切的不是;
          html的tag里面,也有一些是不能使用的字符,例如空格;
          提取url里面文件名稱的,也是錯誤.  回復(fù)  更多評論
            

          主站蜘蛛池模板: 翼城县| 永胜县| 福清市| 皮山县| 金塔县| 大余县| 大理市| 开封市| 仲巴县| 门源| 富裕县| 抚州市| 勐海县| 华坪县| 尚义县| 翁牛特旗| 安徽省| 大连市| 磴口县| 香河县| 轮台县| 石门县| 巢湖市| 韩城市| 耒阳市| 麻阳| 翁源县| 临汾市| 南郑县| 漳州市| 乌拉特中旗| 滨州市| 林周县| 乌审旗| 安乡县| 乌什县| 阿坝| 海兴县| 二连浩特市| 建水县| 凤冈县|