js正则表达式分析

常用的数字正则(严格匹配)  
正则  含义  
^[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]+$/i  
^[A-Z]+$    匹配由26个英文字母的大写组成的字符串   
^[a-z]+$    匹配由26个英文字母的小写组成的字符串   
^[A-Za-z0-9]+$  匹配由数字和26个英文字母组成的字符串 注意\w包含下划线_  
^\w+$   匹配由数字、26个英文字母或者下划线组成的字符串    
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。   

 

 

匹配中文字符  
普遍使用的正则是[\u4e00-\u9fa5],

 

 

匹配双字节字符(包括汉字在内)  
[^\x00-\xff],可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1),代码示例如下:  
console.info( "abc".replace( /[^\x00-\xff]/g,"aa" ).length ) // 3  
console.info( "汉字".replace( /[^\x00-\xff]/g,"aa" ).length ) // 4  
console.info( "abc汉字".replace( /[^\x00-\xff]/g,"aa").length ) // 7  

 

 

匹配HTML标记的正则表达式  
var rtag = /^<([a-z]+)\s*\/?> (?:<\/\1>)?$/i // 去掉了中间的.*  
这个正则的应用范围仅限于简单的标签匹配、提取,不能匹配嵌套标记。  

 

 

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

 

 

匹配邮箱
 /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;

 

 

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

 

 

匹配国内电话号码   
\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位数字 
(?!)意思是否定顺序环视,不匹配右边的内容。[1-9]\d{5}(?!\d)整个表达式的意思就是:以1至9的数字开头,后面接5位任意数字,并且第6位开始(也就是邮编的末尾)不能是任意数字。\d就是任意数字的意思。

 

 

验证身份证
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
要求:
1、15位或18位,如果是15位,必需全是数字。
2、如果是18位,最后一位可以是数字或字母Xx,其余必需是数字。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-08-04 14:16  jsbally  阅读(288)  评论(0编辑  收藏  举报