常用正则表达式 整理篇

2016-02-19 10:05 2 1 收藏

今天图老师小编要跟大家分享常用正则表达式 整理篇,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - Web开发 】

匹配中文字符的正则表达式: [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*$)

应用:j avascript中没有像v bscript那样的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

*注
===============================
如果var s = “abacabefggeeii”
结果就不对了,结果为:abeicfgg
正则表达式的能力有限
===============================

我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。

得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1

s="http://blog.penner.cn/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,''))"

匹配非负整数(正整数 + 0)

^d+$

匹配正整数

^[0-9]*[1-9][0-9]*$

匹配非正整数(负整数 + 0)

^((-d+)|(0+))$

匹配负整数

^-[0-9]*[1-9][0-9]*$

匹配整数

^-?d+$

匹配非负浮点数(正浮点数 + 0)

^d+(.d+)?$

匹配正浮点数

^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$

匹配非正浮点数(负浮点数 + 0)

^((-d+(.d+)?)|(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+)?$

匹配由26个英文字母组成的字符串

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)^[A-Za-z]+$

匹配由26个英文字母的大写组成的字符串

^[A-Z]+$

匹配由26个英文字母的小写组成的字符串

^[a-z]+$

匹配由数字和26个英文字母组成的字符串

^[A-Za-z0-9]+$

匹配由数字、26个英文字母或者下划线组成的字符串

^w+$

匹配email地址

^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$

匹配url

^[a-zA-z]+://匹配(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$

匹配html tag

s*(S+)(s[^]*)?(.*?)s*/1s*

Visual Basic & C# Regular Expression
1.确认有效电子邮件格式
下面的示例使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址,则 IsValidEmail 方法返回 true,否则返回 false,但不采取其他任何操作。您可以使用 IsValidEmail,在应用程序将地址存储在数据库中或显示在 ASP.NET 页中之前,筛选出包含无效字符的电子邮件地址。

[Visual Basic]

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)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]

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)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]

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)Function MDYToDMY(input As String) As String
Return Regex.Replace(input, _
"b(?monthd{ 1,2 })/(?dayd{ 1,2 })/(?yeard{ 2,4 })b", _
"${ day }-${ month }-${ year }")
End Function

[C#]

String MDYToDMY(String input)
{
    return Regex.Replace(input,"b(?monthd{ 1,2 })/(?dayd{ 1,2 })/(?yeard{ 2,4 })b","${ day }-${ month }-${ year }");
}

Regex 替换模式
本示例说明如何在 Regex.Replace 的替换模式中使用命名的反向引用。其中,替换表达式 ${ day } 插入由 (?…) 组捕获的子字符串。

有几种静态函数使您可以在使用正则表达式操作时无需创建显式正则表达式对象,而 Regex.Replace 函数正是其中之一。如果您不想保留编译的正则表达式,这将给您带来方便

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

[Visual Basic]

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)Function Extension(url As String) As String
Dim r As New Regex("^(?protow+)://[^/]+?(?port:d+)?/", _
RegexOptions.Compiled)
Return r.Match(url).Result("${ proto }${ port }")
End Function

[C#]

String Extension(String url)
{
    Regex r = new Regex(@"^(?protow+)://[^/]+?(?port:d+)?/",
    RegexOptions.Compiled);
    return r.Match(url).Result("${ proto }${ port }");
}

只有字母和数字,不小于6位,且数字字母都包含的密码的正则表达式
在C#中,可以用这个来表示:

"w{ 6 }(w+)*"

一个将需要将路径字符串拆分为根目录和子目录两部分的算法程序,考虑路径格式有:C:aabbcc ,aabbcc , ftp://aa.bb/cc 上述路径将分别被拆分为:C:和aabbcc ,aa 和 bbcc , ftp:// 和 aa.bb/cc 用javascript实现如下:

var strRoot,strSub
var regPathParse=/^([^^/]+[/]+|\[^]+)(.*)$/
if(regPathParse.test(strFolder))
{
    strRoot=RegExp.$1
    strSub=RegExp.$2
}

来源:https://www.tulaoshi.com/n/20160219/1593311.html

延伸阅读
标签: Web开发
这里有一些可能会遇到的正则表达式示例:  /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。  /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID号码是否由一个2位字,一个连字符以及一个5位数字组成。  /(.*).*\/\1/ "(.*).*\/\1" 匹配一个 HTML 标记。  下表是元字符及其在正则表...
中国电话号码验证 匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222 正则表达式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*" 中国邮政编码验证 匹配形式如:215421 正则表达式 "d{6}" 电子邮件验证 匹配形式如: [email protected] /* */ ...
标签: Web开发
正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为元字符)。模式描述在搜索文本时要匹配的一个或多个字符串。   正则表达式示例 表达式 匹配 /^\s*$/ 匹配空行。 /\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。 /\s*(\S+)(\s[^]*)?[\s\S]*\s*\/\1\s*/ ...
标签: Web开发
正则表达式在PHP中被用来处理复杂的文字串。支持正则表达式的函数有: ereg()ereg replace()eregi replace()split() 这些函数都将正则表达式作为他们的第一个参数。PHP使用POSIX扩展规则表达式(使用POSIX 1003.2)。要找到所有的关于POSIX扩展规则表达式的描述,请查看包括在PHP发行版本之内的regex man页面。 Examp...
正则表达式简介 翻译:NorthTibet 原文出处:Regular Expressions 有些新手对正则表达式不是很熟悉,有必要在此作一简单回顾。如果你是正则表达式高手,可以不用看这一部分。 正则表达式是描述字符串集的字符串。例如,正则表达式“Mic*”描述所有包含“Mic”,后跟零个或多个字符的字符串。Mickey、Microsoft、Michelangelo...

经验教程

532

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部