`

Js正则表达式(转自Google)

阅读更多

经典正则表达式
正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会­更新。

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

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

得用正则表达式从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').r­eplace(/[^\u4E00-\u9FA5]/g,''))"

用正则表达式限制只能输入全角字符:
onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').r­eplace(/[^\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.csdn.net/laily/category/19548.aspx
http://blog.csdn.net/laily/archive/2004/06/30/30525.aspx
微软的正则表达式教程(五):选择/编组和后向引用

http://blog.csdn.net/laily/archive/2004/06/30/30522.aspx
微软的正则表达式教程(四):限定符和定位符

http://blog.csdn.net/laily/archive/2004/06/30/30517.aspx
微软的正则表达式教程(三):字符匹配

http://blog.csdn.net/laily/archive/2004/06/30/30514.aspx
微软的正则表达式教程(二):正则表达式语法和优先权顺序

http://blog.csdn.net/laily/archive/2004/06/30/30511.aspx
微软的正则表达式教程(一):正则表达式简介

http://blog.csdn.net/laily/archive/2004/06/30/30360.aspx
小程序大作为:高级查找/替换、正则表达式练习器、Javascript脚本程序调试器

http://blog.csdn.net/laily/archive/2004/06/24/25872.aspx
经典正则表达式

正则表达式,正规表达式,正则表达式匹配,正则表达式语法,模式匹配,正规表达式匹配
javascript正则表达式 ASP正则表达式 ASP.NET 正则表达式
C#正则表达式 JSP正则表达式 PHP正则表达式
VB.NET正则表达式 VBSCript正则表达式编程
delphi正则表达式  jscript

# 回复:经典正则表达式 2004-08-03 2:12 PM 阿赖
正则表达式 regular expression
正则表达式 RegExp
模式 pattern
匹配 Match
.NET命名空间: System.Text.RegularExpression

# 回复:经典正则表达式 2004-08-03 2:14 PM 阿赖
补充:
^\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

# 回复:经典正则表达式 2004-09-08 7:37 PM totoro
利用正则表达式去除字串中重复的字符的算法程序:

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
正则表达式的能力有限

# 回复:经典正则表达式 2004-09-10 2:07 PM 阿赖
RE: totoro
谢谢你的指点,这个javascript正则表达式程序算法确实有问题,我会试着找更好的办法!!!

# 回复:经典正则表达式 2004-10-11 3:52 PM Lai
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-z­A-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-z­A-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}");

分享到:
评论

相关推荐

    js动态拼接正则表达式的两种方法

    举个例子:比如说要验证月份,格式为:’yyyy-MM’,这个正则表达式写起来很简单,实在写不出,也可以Google、百度一把,网上例子一大堆!但是js正则表达式就这样写死也会带来新的问题:如果配置文件的月份格式改了...

    JavaScript学习笔记包括正则表达式、异常处理、调试、关键字等

    #### 一、JavaScript 正则表达式 **1.1 定义与用途** 正则表达式是一种强大的文本处理工具,在JavaScript中主要用于字符串的操作,如查找、替换等。 **1.2 基本语法** 正则表达式的基本格式为:`/pattern/...

    正则文本数据提取器

    - **JavaScript正则表达式**:JavaScript 内置的正则表达式引擎有其特殊性,比如不支持多行模式。 5. **编程语言中的正则表达式库** - **Python的`re`模块**:提供强大的正则表达式支持,包括编译、匹配、搜索、...

    简单的用js实现过滤多余字符的正则表达式

    在JavaScript中,正则表达式是一种强大的文本处理工具,它能用于查找、替换或匹配字符串中的模式。在上述示例中,我们看到如何使用正则表达式来过滤掉字符串中的重复字符。以下是对这个实例的详细解释: 首先,让...

    javascript正则表达式基础知识入门

    接下来,我们将探讨javascript正则表达式中四种常用的方法: 1. test方法:这个方法用于检测一个字符串是否匹配某个模式,如果字符串中含有符合模式的字符,则返回true,否则返回false。例如,我们可以使用正则...

    JavaScript正则表达式Xeger.zip

    Xeger 是更富有表现力的 JavaScript 正则表达式,Xeger 发音为 "zeeger"。使用:var xeger = require('xeger'); /* Parsing a URL. Getting the schema, host, path, and url params */ /* Instead...

    正则抓取页面

    在“Google”这个压缩包文件中,虽然没有具体的文件列表,但我们可以假设其中可能包含了一些关于如何使用正则表达式抓取Google搜索结果的教程或示例代码。通过学习这些资源,你可以进一步提升在网页抓取方面的能力,...

    正则表达式帮助文档1

    正则表达式是一种用于模式匹配的强大工具,广泛应用于多种编程语言之中,如Java、Python、JavaScript、Ruby等,以及操作系统如Linux下的shell脚本。它提供了一种灵活的方式来定义字符串中的模式,并以此为基础实现对...

    RegularExpressionTester:在网站上测试Java正则表达式

    这是Java正则表达式的测试工具支持在Google App Engine上运行。 它部署在下面的链接。 Java正则表达式测试器 用法 输入文字。 输入目标文本,正则表达式模式和替换(可选)。 点击“测试”按钮 单击“测试”按钮...

    正则表达式\d元字符(相对于数字0-9)

    在浏览器的支持方面,主流浏览器如Internet Explorer(IE)、Mozilla Firefox(火狐)以及Google Chrome(谷歌)都支持使用\d元字符进行正则表达式的构造和匹配操作。在JavaScript编程中,可以通过提供的实例代码来...

    正则表达式\W元字符使用方法

    - **Google Chrome(谷歌)浏览器**:作为市场上最受欢迎的浏览器之一,Chrome不仅提供了强大的性能,还全面支持了包括\W在内的所有正则表达式元字符。 #### 实例代码 下面通过具体的代码示例来进一步理解\W元字符...

    url_regex:提供用于验证或提取URL的最佳正则表达式

    网址正则表达式 提供最知名的正则表达式来验证和提取URL。 它基于和所做的出色工作。 为什么我们需要这个正则表达式的宝石? 您无需遵循原始正则表达式的更改和改进。 您可以略微自定义正则表达式:方案可以是可...

    c#制作的编程辅助工具,包含:正则表达式、http抓包、socket通讯、字符串编解码、html常用工具等

    - **v8sharp.dll**:V8Sharp是C#与Google V8 JavaScript引擎交互的绑定库,允许在C#应用中执行JavaScript代码。 - **HttpCodeLib.dll**:可能是一个HTTP协议处理库,用于处理HTTP请求和响应。 - **MahApps.Metro....

    regexp:javascript 正则表达式库,来自 www.javaquery.com

    regexp.js 版本 0.0.1 javascript 正则表达式库,来自 在您的页面中导入 regexp.js javascript 并轻松验证您的输入。 加入 Google Plus 社区: : 提交正则表达式报告软件缺陷请求正则表达式讨论

    JS使用正则表达式除去字符串中重复字符的方法

    这里演示一个简单的JavaScript正则表达式实例,将一串含有重复字符串中的多余字符滤除掉,请运行查看效果。 具体代码如下: &lt;html&gt; &lt;head&gt; &lt;title&gt;利用正则表达法除去字符串中的重复字符&lt;/...

    正则表达式.号元字符(除了回车符\r和换行符\n)

    正则表达式.号元字符: 点号(.)元字符可以匹配除了回车符(\r)和换行符(\n)之外的任意字符。 语法结构: 构造函数方式: new RegExp(".") 对象直接量方式: [JavaScript] 纯文本查看 复制代码运行代码 /./ 浏览器支持: IE...

    正则表达式m修饰符(多行匹配)

    正则表达式是一种在文本中进行模式匹配的强大工具,它在很多编程语言中都有应用。其中,m修饰符是正则表达式中用于多行匹配的一个特殊字符。了解m修饰符的使用方式对于进行复杂文本处理非常关键。 首先,我们来理解...

    analytics:各种正则表达式和Google表格Google Apps脚本技巧,用于管理Google Analytics(分析)和其他分析来源

    这篇关于"analytics"的资源集合提供了一系列正则表达式和Google表格与Google Apps Script的技巧,帮助用户更有效地管理和理解他们的分析数据。以下是这些知识点的详细说明: **正则表达式(Regular Expressions)**...

Global site tag (gtag.js) - Google Analytics