[JS] 常用正则表达式集(一)

匹配中文字符的正则表达式: [/u4e00-/u9fa5] 

 

评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 

 

 

 

匹配双字节字符(包括汉字在内):[^/x00-/xff] 

 

评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 

 

 

 

匹配空白行的正则表达式:/n/s*/r 

 

评注:可以用来删除空白行 

 

 

 

匹配HTML标记的正则表达式:<(/S*?)[^>]*>.*?|<.*? /> 

 

评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 

 

 

 

匹配首尾空白字符的正则表达式:^/s*|/s*$ 

 

评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 

 

 

 

匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 

 

评注:表单验证时很实用 

 

 

 

匹配网址URL的正则表达式:[a-zA-z]+://[^/s]* 

 

评注:网上流传的版本功能很有限,上面这个基本可以满足需求 

 

 

 

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 

 

评注:表单验证时很实用 

 

 

 

匹配国内电话号码:/d{3}-/d{8}|/d{4}-/d{7} 

 

评注:匹配形式如 0511-4405222 或 021-87888822 

 

 

 

匹配腾讯QQ号:[1-9][0-9]{4,} 

 

评注:腾讯QQ号从10000开始 

 

 

 

匹配中国邮政编码:[1-9]/d{5}(?!/d) 

 

评注:中国邮政编码为6位数字 

 

 

 

匹配身份证:/d{15}|/d{18} 

 

评注:中国的身份证为15位或18位 

 

 

 

匹配ip地址:/d+/./d+/./d+/./d+ 

 

评注:提取ip地址时有用 

 

 

 

匹配特定数字: 

 

^[1-9]/d*$    //匹配正整数 

 

^-[1-9]/d*$   //匹配负整数 

 

^-?[1-9]/d*$   //匹配整数 

 

^[1-9]/d*|0$  //匹配非负整数(正整数 + 0) 

 

^-[1-9]/d*|0$   //匹配非正整数(负整数 + 0) 

 

^[1-9]/d*/./d*|0/./d*[1-9]/d*$   //匹配正浮点数 

 

^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$  //匹配负浮点数 

 

^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$  //匹配浮点数 

 

^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$   //匹配非负浮点数(正浮点数 + 0) 

 

^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$  //匹配非正浮点数(负浮点数 + 0) 

 

评注:处理大量数据时有用,具体应用时注意修正 

 

 

 

匹配特定字符串: 

 

^[A-Za-z]+$  //匹配由26个英文字母组成的字符串 

 

^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串 

 

^[a-z]+$  //匹配由26个英文字母的小写组成的字符串 

 

^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串 

 

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

 

评注:最基本也是最常用的一些表达式 

 

 

 

整理出来的一些常用的正则表达式 所属分类: JScript (三) 

 

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

 

isEmail1 : /^/w+([/./-]/w+)*/@/w+([/./-]/w+)*/./w+$/; 

 

isEmail2 : /^.*@[^_]*$/; 

 

Phone : /^((/(/d{3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}$/ 

 

Mobile : /^((/(/d{3}/))|(/d{3}/-))?13/d{9}$/ 

 

Url : /^http:[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/':+!]*([^<>/"/"])*$/ 

 

IdCard : /^/d{15}(/d{2}[A-Za-z0-9])?$/ 

 

Currency : /^/d+(/./d+)?$/ 

 

Number : /^/d+$/ 

 

Code : /^[1-9]/d{5}$/ 

 

QQ : /^[1-9]/d{4,8}$/ 

 

Integer : /^[-/+]?/d+$/ 

 

Double : /^[-/+]?/d+(/./d+)?$/ 

 

English : /^[A-Za-z]+$/ 

 

Chinese : /^[/u0391-/uFFE5]+$/ 

 

UnSafe : /^(([A-Z]*|[a-z]*|/d*|[-_/~!@#/$%/^&/*/./(/)/[/]/{/}<>/?/'/"]*)|.{0,5})$|/s/ 

 

PassWord :^[//w]{6,12}$ 

 

ZipCode : ^[//d]{6} 

 

/^(/+/d+ )?(/(/d+/) )?[/d ]+$/; //这个是国际通用的电话号码判断 

 

/^(1[0-2]/d|/d{1,2})$/; //这个是年龄的判断 

 

/^/d+/./d{2}$/; //这个是判断输入的是否为货币值 

 

<!-- IP地址有效性验证函数--> 

 

<script language=javascript runat=server> 

 

    ip_ip = '(25[0-5]|2[0-4]//d|1//d//d|//d//d|//d)'; 

 

    ip_ipdot = ip + '//.'; 

 

    isIPaddress = new RegExp('^'+ip_ipdot+ip_ipdot+ipdot+ip_ip+'$'); 

 

</script> 

 

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 

 

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

 

应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下: 

 

String.prototype.trim = function() 

 

 

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

 

 

匹配空行的正则表达式:/n[/s| ]*/r 

 

匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/ 

 

匹配首尾空格的正则表达式:(^/s*)|(/s*$) 

 

匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 

 

匹配网址URL的正则表达式:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)? 

 

 

 

^/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 

 

 

 

利用正则表达式分解和转换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)) 

 

 

 

用正则表达式限制只能输入中文:οnkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/u4E00-/u9FA5]/g,''))" 

 

 

 

用正则表达式限制只能输入全角字符: ')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/uFF00-/uFFFF]/g,''))" 

 

 

 

用正则表达式限制只能输入数字:οnkeyup="value=value.replace(/[^/d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))" 

 

 

 

用正则表达式限制只能输入数字和英文:οnkeyup="value=value.replace(/[/W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))" 

 

 

 

更改日期格式 

 

以下代码示例使用 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 函数正是其中之一。如果您不想保留编译的正则表达式,这将给您带来方便 

 

 

 

提取 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}"); 

 

 

 

 

利用正则表达式去除字串中重复的字符的算法程序: 

 

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) 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jxf111348/archive/2009/03/22/4014694.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS常用正则表达式可以包括以下内容: 1. 直接量字符,即直接匹配的字符。 2. 字符类,用于匹配一组字符中的任意一个字符。 3. 复制,指定匹配的次数或范围。 4. 选择、分组和引用,用括号将单独的项目分组成子表达式。 5. 指定匹配的位置,用于匹配字符串的开始或结束位置。 6. 属性,用于指定正则表达式对象的属性和方法。 举例来说,常用正则表达式包括: - 匹配字符串 "java",后面可以有 "script" 或者没有:/java(script)?/ - 非负整数(包括正整数和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个英文字母组成的字符串:/^[A-Za-z]+$/ - 由26个大写英文字母组成的字符串:/^[A-Z]+$/ - 由26个小写英文字母组成的字符串:/^[a-z]+$/ - 由数字和26个英文字母组成的字符串:/^[A-Za-z0-9]+$/ - 由数字、26个英文字母或下划线组成的字符串:/^\w+$/ - email地址:/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ - URL:/^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/ 这些是一部分常用正则表达式,可以根据具体需求进行选择和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值