加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式语法及常用的正则…

发布时间:2020-12-14 01:45:02 所属栏目:百科 来源:网络整理
导读:@ 原文地址: 正则表达式语法及常用的正则表达式 作者: 挂甲人 一、正则表达式语法 正则表达式在很多时候是非常有用,这里主要总结一些正则表达式的基本语法还有一些常用的正则表达式,以备不时之需。关于正则表达式的基本语法这里推荐一篇叫做《正则表达式
@
原文地址:正则表达式语法及常用的正则表达式 作者:挂甲人
一、正则表达式语法
正则表达式在很多时候是非常有用,这里主要总结一些正则表达式的基本语法还有一些常用的正则表达式,以备不时之需。关于正则表达式的基本语法这里推荐一篇叫做《正则表达式30分钟入门教程》点击
这里查看 。为了防止链接过时,本站提供了一个固定的文档,可以点击 这里查看

二、常用正则表达式
1、匹配中文字符的正则表达式:

[u4e00-u9fa5]

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

2、匹配双字节字符(包括汉字在内):

[^x00-xff]

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

3、匹配空白行的正则表达式:


ns*r

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

4、匹配HTML标记的正则表达式:

<(S*?)[^>]*>.*?</1>|<.*?/>

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

5、匹配首尾空白字符的正则表达式:

^s*|s*$

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

6、匹配Email地址的正则表达式:


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

评注:表单验证时很实用

7、匹配网址URL的正则表达式:


[a-zA-z]+://[^s]*

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

8、匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):

^[a-zA-Z][a-zA-Z0-9_]{4,15}$

评注:表单验证时很实用

9、匹配国内电话号码:


d{3}-d{8}|d{4}-d{7}

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

10、匹配腾讯QQ号:


[1-9][0-9]{4,}

评注:腾讯QQ号从10000开始

11、匹配中国邮政编码:


[1-9]d{5}(?!d)

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

12、匹配身份证:

d{15}|d{18}

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

13、匹配ip地址:

d+.d+.d+.d+

评注:提取ip地址时有用

14、匹配特定数字:

^[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)

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

15、匹配特定字符串:

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

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

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

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

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


引用博文 :http://www.incoding.org/admin/archives/564.html

下面是一个表单验证的示例文件:formValidatorRegex.js
var regexEnum =
{
intege:"^-?[1-9]d*$", //整数
intege1:"^[1-9]d*$", //正整数
intege2:"^-[1-9]d*$", //负整数
num:"^([+-]?)d*.?d+$", //数字
num1:"^[1-9]d*|0$", //正数(正整数 + 0)
num2:"^-[1-9]d*|0$", //负数(负整数 + 0)
decmal:"^([+-]?)d*.d+$", //浮点数
decmal1:"^[1-9]d*.d*|0.d*[1-9]d*$", //正浮点数
decmal2:"^-([1-9]d*.d*|0.d*[1-9]d*)$",//负浮点数
decmal3:"^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$",//浮点数
decmal4:"^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$",//非负浮点数(正浮点数 + 0)
decmal5:"^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$",//非正浮点数(负浮点数 + 0)
decmal6:"^-?(0.d*[1-9]+d*)$", //大于0小与1
decmal7:"^-?(0(.d*)?)$", //大于等于0 小于1
email:"^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$",//邮件
color:"^[a-fA-F0-9]{6}$", //颜色
url:"^http[s]?://([w-]+.)+[w-]+([w-./?%&=]*)?$", //url
chinese:"^[u4E00-u9FA5uF900-uFA2D]+$", //仅中文
ascii:"^[x00-xFF]+$", //仅ACSII字符
zipcode:"^d{6}$", //邮编
mobile:"^(13|15)[0-9]{9}$", //手机
ip4:"^(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d)$", //ip地址
notempty:"^S+$", //非空
picture:"(.*).(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$", //图片
rar:"(.*).(rar|zip|7zip|tgz)$", //压缩文件
date:"^d{4}(-|/|.)d{1,2}1d{1,2}$", //日期
qq:"^[1-9]*[1-9][0-9]*$", //QQ号码
tel:"^(([0+]d{2,3}-)?(0d{2,3})-)?(d{7,8})(-(d{3,}))?$", //电话号码的函数(包括验证国内区号,国际区号,分机号)
username:"^w+$", //用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
letter:"^[A-Za-z]+$", //字母
letter_u:"^[A-Z]+$", //大写字母
letter_l:"^[a-z]+$", //小写字母
idcard:"^[1-9]([0-9]{14}|[0-9]{17})$" //身份证

}

var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
//验证省份证
function isCardID(sId){
var iSum=0 ;
var info="" ;
if(!/^d{17}(d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误";
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null) return "你的身份证地区非法";
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/")) ;
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "身份证上的出生日期非法";
for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
if(iSum!=1) return "你输入的身份证号非法";
return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
}




//短时间,形如 (13:04:06)

function isTime(str)
{
var a = str.match(/^(d{1,2})(:)?(d{1,2})2(d{1,2})$/);
if (a == null) {return false}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
return false;
}
return true;
}

//短日期,形如 (2003-12-05)
function isDate(str)
{
var r = str.match(/^(d{1,4})(-|/)(d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1],r[3]-1,r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

//长时间,形如 (2003-12-05 13:04:06) function isDateTime(str) { var reg = /^(d{1,2}) (d{1,2}):(d{1,2})$/; var r = str.match(reg); if(r==null) return false; var d= new Date(r[1],r[4],r[5],r[6],r[7]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读