常用正则表达式

 
摘要:收集一些常用的正 表达式。
表达式用于字符串 理,表 单验证 合, 用高效,但用到 时总 是不太把握,以致往往要上网 一番。我将一些常用的表达式收藏在 里,作 忘之用。本 会更新。
匹配中文字符的正 表达式: [/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 的正 表达式: 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

我原来在 优快云 发贴寻 求一个表达式来 实现 去除重 字符的方法,最 没有找到, 是我能想到的最 简单 实现 方法。 思路是使用后向引用取出包括重 的字符,再以重 的字符建立第二个表达式,取到不重 的字符,两者串 个方法 于字符 序有要求的字符串可能不适用。
得用正 表达式从 URL 地址中提取文件名的 javascript 程序,如下 page1
s="http://www.9499.net/page1.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,''))"
 
 
表达式,相关链
http://blog.youkuaiyun.com/laily/category/19548.aspx
http://blog.youkuaiyun.com/laily/archive/2004/06/30/30525.aspx的正表达式教程(五):选择/编组和后向引用

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30522.aspx的正表达式教程(四):限定符和定位符

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30517.aspx的正表达式教程(三):字符匹配 

 
http://blog.youkuaiyun.com/laily/archive/2004/06/30/30514.aspx 的正 表达式教程(二):正 表达式 法和 权顺

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30511.aspx 的正 表达式教程(一):正 表达式

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30360.aspx 小程序大作 :高 级查 / 、正 表达式 练习 器、 javascript 脚本程序 调试

http://blog.youkuaiyun.com/laily/archive/2004/06/24/25872.aspx 典正 表达式

表达式,正 表达式,正 表达式匹配,正 表达式 法,模式匹配,正 表达式匹配 javascript 表达式 ASP 表达式 ASP.NET 表达式 C# 表达式 JSP 表达式 PHP 表达式 VB.NET 表达式 VBSCript 表达式 delphi 表达式 jscript
 
表达式 regular expression
表达式 RegExp
模式 pattern
匹配 Match
.NET 命名空 : System.Text.RegularExpression

 
充:
^/d+$    // 匹配非 整数(正整数 + 0
^[0-9]*[1-9][0-9]*$    // 匹配正整数
^((-/d+)|(0+))$    // 匹配非正整数( 整数 + 0
^-[0-9]*[1-9][0-9]*$    // 匹配 整数
^-?/d+$      // 匹配整数
^/d+(/./d+)?$    // 匹配非 浮点数(正浮点数 + 0
^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$    // 匹配正浮点数
^((-/d+(/./d+)?)|(0+(/.0+)?))$    // 匹配非正浮点数( 浮点数 + 0
^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$    // 匹配 浮点数
^(-?/d+)(/./d+)?$    // 匹配浮点数
^[A-Za-z]+$    // 匹配由 26 个英文字母 成的字符串
^[A-Z]+$    // 匹配由 26 个英文字母的大写 成的字符串
^[a-z]+$    // 匹配由 26 个英文字母的小写 成的字符串
^[A-Za-z0-9]+$    // 匹配由数字和 26 个英文字母 成的字符串
^/w+$    // 匹配由数字、 26 个英文字母或者下划 线组 成的字符串
^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$      // 匹配 email 地址
^[a-zA-z]+:// 匹配 (/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$    // 匹配 url
 
利用正表达式去除字串中重的字符的算法程序: 


 
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
===============================
如果var s = "abacabefggeeii"
果就不 了, :abeicfgg
表达式的能力有限
RE: totoro
谢谢 你的指点, javascript 表达式程序算法确 问题 ,我会 着找更好的 !!!
1.有效件格式
下面的代示例使用静 Regex.IsMatch 方法验证一个字符串是否有效件格式。如果字符串包含一个有效的件地址, IsValidEmail 方法返回 true,否返回 false,但不采取其他任何操作。您可以使用 IsValidEmail,在用程序将地址存在数据中或示在 ASP.NET 中之前,筛选出包含无效字符的件地址。

[Visual Basic]
Function IsValidEmail(strIn As String) As Boolean
' Return true if strIn is in valid e-mail format.
Return Regex.IsMatch(strIn, ("^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$")
End Function
[C#]
bool IsValidEmail(string strIn)
{
// Return true if strIn is in valid e-mail format.
return Regex.IsMatch(strIn, @"^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$");
}


2.清理入字符串
下面的代示例使用静 Regex.Replace 方法从字符串中抽出无效字符。您可以使用里定 CleanInput 方法,清除掉在接受用户输入的窗体的文本字段中入的可能有害的字符。CleanInput 在清除掉除 @-字符)和 .(句点)以外的所有非字母数字字符后返回一个字符串。

[Visual Basic]
Function CleanInput(strIn As String) As String
' Replace invalid characters with empty strings.
Return Regex.Replace(strIn, "[^/w/.@-]", "")
End Function
[C#]
String CleanInput(string strIn)
{
// Replace invalid characters with empty strings.
return Regex.Replace(strIn, @"[^/w/.@-]", ""); 

 
}


3.
更改日期格式
以下代 示例使用 Regex.Replace 方法来用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式。

[Visual Basic]
Function MDYToDMY(input As String) As String
Return Regex.Replace(input, _
"/b(?<month>/d{1,2})/(?<day>/d{1,2})/(?<year>/d{2,4})/b", _
"${day}-${month}-${year}")
End Function
[C#]
String MDYToDMY(String input)
{
return Regex.Replace(input,
"//b(?<month>//d{1,2})/(?<day>//d{1,2})/(?<year>//d{2,4})//b",
"${day}-${month}-${year}");
}
Regex 模式
本示例 明如何在 Regex.Replace 的替 模式中使用命名的反向引用。 其中,替 表达式 ${day} 插入由 (?<day>...) 的子字符串。

有几 函数使您可以在使用正 表达式操作 无需 式正 表达式 象,而 Regex.Replace 函数正是其中之一。如果您不想保留 编译 的正 表达式, 来方便


4. 提取 URL 信息
以下代 示例使用 Match.Result 来从 URL 提取 协议 和端口号。例如, “http://www.contoso.com:8080/letters/readme.html” 将返回 “http:8080”

[Visual Basic]
Function Extension(url As String) As String
Dim r As New Regex("^(?<proto>/w+)://[^/]+?(?<port>:/d+)?/", _
RegexOptions.Compiled)
Return r.Match(url).Result("${proto}${port}")
End Function
[C#]
String Extension(String url)
{
Regex r = new Regex(@"^(?<proto>/w+)://[^/]+?(?<port>:/d+)?/",
RegexOptions.Compiled);
return r.Match(url).Result("${proto}${port}");
}

  
摘要:收集一些常用的正 表达式。
表达式用于字符串 理,表 单验证 合, 用高效,但用到 时总 是不太把握,以致往往要上网 一番。我将一些常用的表达式收藏在 里,作 忘之用。本 会更新。
匹配中文字符的正 表达式: [/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 的正 表达式: 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

我原来在 优快云 发贴寻 求一个表达式来 实现 去除重 字符的方法,最 没有找到, 是我能想到的最 简单 实现 方法。 思路是使用后向引用取出包括重 的字符,再以重 的字符建立第二个表达式,取到不重 的字符,两者串 个方法 于字符 序有要求的字符串可能不适用。
得用正 表达式从 URL 地址中提取文件名的 javascript 程序,如下 page1
s="http://www.9499.net/page1.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,''))"
 
 
表达式,相 关链
http://blog.youkuaiyun.com/laily/category/19548.aspx
http://blog.youkuaiyun.com/laily/archive/2004/06/30/30525.aspx 的正 表达式教程(五): 选择 / 编组 和后向引用

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30522.aspx 的正 表达式教程(四):限定符和定位符

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30517.aspx 的正 表达式教程(三):字符匹配

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30514.aspx 的正 表达式教程(二):正 表达式 法和 权顺

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30511.aspx 的正 表达式教程(一):正 表达式

http://blog.youkuaiyun.com/laily/archive/2004/06/30/30360.aspx 小程序大作 :高 级查 / 、正 表达式 练习 器、 javascript 脚本程序 调试

http://blog.youkuaiyun.com/laily/archive/2004/06/24/25872.aspx 典正 表达式

表达式,正 表达式,正 表达式匹配,正 表达式 法,模式匹配,正 表达式匹配 javascript 表达式 ASP 表达式 ASP.NET 表达式 C# 表达式 JSP 表达式 PHP 表达式 VB.NET 表达式 VBSCript 表达式 delphi 表达式 jscript
 
表达式 regular expression
表达式 RegExp
模式 pattern
匹配 Match
.NET 命名空 : System.Text.RegularExpression

 
充:
^/d+$    // 匹配非 整数(正整数 + 0
^[0-9]*[1-9][0-9]*$    // 匹配正整数
^((-/d+)|(0+))$    // 匹配非正整数( 整数 + 0
^-[0-9]*[1-9][0-9]*$    // 匹配 整数
^-?/d+$      // 匹配整数
^/d+(/./d+)?$    // 匹配非 浮点数(正浮点数 + 0
^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$    // 匹配正浮点数
^((-/d+(/./d+)?)|(0+(/.0+)?))$    // 匹配非正浮点数( 浮点数 + 0
^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$    // 匹配 浮点数
^(-?/d+)(/./d+)?$    // 匹配浮点数
^[A-Za-z]+$    // 匹配由 26 个英文字母 成的字符串
^[A-Z]+$    // 匹配由 26 个英文字母的大写 成的字符串
^[a-z]+$    // 匹配由 26 个英文字母的小写 成的字符串
^[A-Za-z0-9]+$    // 匹配由数字和 26 个英文字母 成的字符串
^/w+$    // 匹配由数字、 26 个英文字母或者下划 线组 成的字符串
^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$      // 匹配 email 地址
^[a-zA-z]+:// 匹配 (/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$    // 匹配 url
 
利用正 表达式去除字串中重 的字符的算法程序:

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
===============================
如果var s = "abacabefggeeii"
果就不 了, :abeicfgg
表达式的能力有限
RE: totoro
谢谢 你的指点, javascript 表达式程序算法确 问题 ,我会 着找更好的 !!!
1. 有效 件格式
下面的代 示例使用静 Regex.IsMatch 方法 验证 一个字符串是否 有效 件格式。 如果字符串包含一个有效的 件地址, IsValidEmail 方法返回 true ,否 返回 false ,但不采取其他任何操作。您可以使用 IsValidEmail ,在 用程序将地址存 在数据 中或 示在 ASP.NET 中之前, 筛选 出包含无效字符的 件地址。

[Visual Basic]
Function IsValidEmail(strIn As String) As Boolean
' Return true if strIn is in valid e-mail format.
Return Regex.IsMatch(strIn, ("^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$")
End Function
[C#]
bool IsValidEmail(string strIn)
{
// Return true if strIn is in valid e-mail format.
return Regex.IsMatch(strIn, @"^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$");
}


2. 清理 入字符串
下面的代 示例使用静 Regex.Replace 方法从字符串中抽出无效字符。您可以使用 里定 CleanInput 方法,清除掉在接受用 户输 入的窗体的文本字段中 入的可能有害的字符。 CleanInput 在清除掉除 @ - 字符 )和 . (句点)以外的所有非字母数字字符后返回一个字符串。

[Visual Basic]
Function CleanInput(strIn As String) As String
' Replace invalid characters with empty strings.
Return Regex.Replace(strIn, "[^/w/.@-]", "")
End Function
[C#]
String CleanInput(string strIn)
{
// Replace invalid characters with empty strings.
return Regex.Replace(strIn, @"[^/w/.@-]", "");
}


3. 更改日期格式
以下代 示例使用 Regex.Replace 方法来用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式。

[Visual Basic]
Function MDYToDMY(input As String) As String
Return Regex.Replace(input, _
"/b(?<month>/d{1,2})/(?<day>/d{1,2})/(?<year>/d{2,4})/b", _
"${day}-${month}-${year}")
End Function
[C#]
String MDYToDMY(String input)
{
return Regex.Replace(input,
"//b(?<month>//d{1,2})/(?<day>//d{1,2})/(?<year>//d{2,4})//b",
"${day}-${month}-${year}");
}
Regex 模式
本示例 明如何在 Regex.Replace 的替 模式中使用命名的反向引用。 其中,替 表达式 ${day} 插入由 (?<day>...) 的子字符串。

有几 函数使您可以在使用正 表达式操作 无需 式正 表达式 象,而 Regex.Replace 函数正是其中之一。如果您不想保留 编译 的正 表达式, 来方便


4. 提取 URL 信息
以下代 示例使用 Match.Result 来从 URL 提取 协议 和端口号。例如, “http://www.contoso.com:8080/letters/readme.html” 将返回 “http:8080”

[Visual Basic]
Function Extension(url As String) As String
Dim r As New Regex("^(?<proto>/w+)://[^/]+?(?<port>:/d+)?/", _
RegexOptions.Compiled)
Return r.Match(url).Result("${proto}${port}")
End Function
[C#]
String Extension(String url)
{
Regex r = new Regex(@"^(?<proto>/w+)://[^/]+?(?<port>:/d+)?/",
RegexOptions.Compiled);
return r.Match(url).Result("${proto}${port}");
}

 
今天有网友 :如何用正 表达式表示要 是数字要 是字母 是字母的 只能是一个字母 数字 无所
我的回答是:
^[a-zA-Z]$|^/d+$
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值