正則表達式 大雜燴

收集一些常用的正則表達式。

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

匹配中文字符的正則表達式: [u4e00-u9fa5]

匹配雙字節字符(包括漢字在內):[^x00-xff]

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

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

匹配空行的正則表達式:n[s| ]*r

匹配HTML標記的正則表達式:/<(.*)>.*</1>|<(.*) />/

匹配首尾空格的正則表達式:(^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.$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!")

}

}

不過上面的程序如果不用正則表達式,而直接用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的正則表達式:+.)+[w-]+(/[w]http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

利用正則表達式去除字串中重複的字符的算法程序:

var s="abacabefgeeii"

var s1=s.replace(/(.).*1/g,"$1")

var re=new RegExp("["+s1+"]","g")

var s2=s.replace(re,"")

alert(s1+s2) //結果爲:abcefgi

我原來在CSDN上發貼尋求一個表達式來實現去除重複字符的方法,最終沒有找到,這是我能想到的最簡單的實現方法。思路是使用後向引用取出包括重複的字符,再以重複的字符建立第二個表達式,取到不重複的字符,兩者串連。這個方法對于字符順序有要求的字符串可能不適用。

得用正則表達式從URL地址中提取文件名的javascript程序,如下結果爲page1

s="http://www.devdao.com/index.htm"

s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2")

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,''''))"

MSDN上的幫助
http://www.microsoft.com/china/msdn/library/webservices/asp.net/regexnet.mspx?mfr=true

正則表達試教程 http://www.knowsky.com/tag-21.html

正則表達式庫 http://www.regexlib.com/

正則表達式討論列表 http://aspadvice.com/login.aspx?ReturnUrl=%2fSignUp%2flist.aspx%3fl%3d68%26c%3d16&l=68&c=16

正則表達式論壇 http://forums.regexadvice.com/

正則表達式 Web 日志 http://blogs.regexadvice.com/

Mastering Regular Expressions (O'Reilly),作者 Jeffrey Friedl http://www.regex.info/

.NET 正則表達式參考 http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTextRegularExpressions.asp

Jscript 正則表達式語法 http://www.msdn.microsoft.com/library/en-us/script56/html/js56jsgrpRegExpSyntax.asp

正則表達式信息 http://www.regular-expressions.info/

PHP正則表達式:PHP中的正則函數-PHP語言
PHP正則表達式主要用于字符串的模式分割、匹配、查找及替換操作。使用正則表達式在某些簡單的環境下可能效率不高,因此如何更好的使用PHP正則表達式需要綜合考慮。我的PHP正則入門,是起源于網上的一篇文章,這篇文章...查看完整版>>PHP正則表達式:PHP中的正則函數-PHP語言
 
PHP正則表達式從url中取得域名
以下代碼可以從URL中獲得域名例如:http://souzz.net/html/database/ORACLE/69613.html得到souzz.netfunction get_domain($url){ $pattern = "/[\w-]+\.(com|net|org|gov|cc|biz|info|cn)(\.(cn|hk))*/"; preg_matc...查看完整版>>PHP正則表達式從url中取得域名
 
Javascript正則表達式的3個例子
用正則表達式驗證Email的合法性;Email驗證的正則表達式:/^[A-Za-z_]+([\w-\.]+)([A-Za-z]+)@((\w[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/i 用正則表達式驗證Visa卡的...查看完整版>>Javascript正則表達式的3個例子
 
IE/Firefox中全局正則表達式的兼容
有這樣一段代碼:if (RegExp.test(num))的結果,在IE中每次都爲TRUE,而在Fire fox中若第一次爲True,第二次必爲False,後面交替出現。大概看了一下過往的解決辦法: 方法一:把if (RegExp.test(num))改爲if (num.matc...查看完整版>>IE/Firefox中全局正則表達式的兼容
 
故障解析:.NET開發正則表達式中BUG一例
又發現了一個 .net 的bug!最近在使用正則表達式的時候發現:在忽略大小寫的時候,匹配值從 0xff 到 0xffff 之間的所有字符,正則表達式竟然也能匹配兩個 ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹...查看完整版>>故障解析:.NET開發正則表達式中BUG一例
 
MFC中用正則表達式進行有效性驗證
  正則表達式最實用的一個地方是驗證用戶輸入。它可以輕松驗證郵編、電話號碼、信用卡號碼——以及現實世界中各種類型的信息。一個正則表達式可以替換成打甚至上百行過程代碼。...查看完整版>>MFC中用正則表達式進行有效性驗證
 
vi 中的正則表達式 (Regular Expression)
.1. 定義和例子 ============ 正則表達式只是一個字符模板,用來在搜索中匹配相同的字符. 在大多數的程序中,正則表達式是括在正斜杠中間的. 例如, /love/就是一個以正斜杠爲分隔符的正則表達式,其中的 模板love 將用...查看完整版>>vi 中的正則表達式 (Regular Expression)
 
Oracle10g支持SQL正則表達式
Oracle 8 和Oracle 9i中缺乏靈活性的SQL 正則表達式最終在Oracle 10g中得到了解決。Oracle 數據庫目前內建了符合POSIX 標准的正則表達式。   四個新的函數分別是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和 R...查看完整版>>Oracle10g支持SQL正則表達式
 
oracle 10g中的正則表達式
 很多mysql的使用者都會臭Oracle,說連正則表達式都沒有。也記得BBS上有很多人在找oracle中的正則表達式。有個公司還專門搞了幾個jar,利用oracle內置的Java實現了它(asktom.oracle.com有介紹)。不過,隨著10g的推...查看完整版>>oracle 10g中的正則表達式
 
 
回到王朝網路首頁