博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式入门教程&&经典Javascript正则表达式(share)
阅读量:6187 次
发布时间:2019-06-21

本文共 4982 字,大约阅读时间需要 16 分钟。

前言

例子: ^.+@.+\\..+$

  这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。

正文

 教程:     

  一个学习正则表达式不错的教程,对正则表达式有兴趣,但不太了解的童鞋可以参考下

 

 

  以下内容摘自   和             [  留个备份 :) ~~  ]    

 

常用JQuery数字类型验证正则表达式整理     (有很多不对的地方,记得适当修改)

 

var regexEnum = {             intege:/^-?[1-9]*$/, //整数             intege1:/^[1-9]*$/, //正整数             intege2:/^-[1-9]*$/, //负整数             num:/^([+-]?)\d*\.?\d+$/, //数字             num1:/^([1-9]*|0)$/, //正数(正整数 + 0)             num2:/^-[1-9]*|0$/, //负数(负整数 + 0)             decmal:/^([+-]?)\d*\.\d+$/, //浮点数             decmal1:/^[1-9]*.\d*|0.\d*[1-9]\d*$/,   //正浮点数             decmal2:/^-([1-9]*.\d*|0.\d*[1-9]*)$/,  //负浮点数             decmal3:/^-?([1-9]*.\d*|0.\d*[1-9]*|0?.0+|0)$/,  //浮点数             decmal4:/^[1-9]*.\d*|0.\d*[1-9]*|0?.0+|0$/,   //非负浮点数(正浮点数 + 0)             decmal5:/^(-([1-9]*.\d*|0.\d*[1-9]*))|0?.0+|0$/,  //非正浮点数(负浮点数 + 0)             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-\u9FA5\uF900-\uFA2D]+$/, //仅中文             ascii:/^[\x00-\xFF]+$/, //仅ACSII字符             zipcode:/^\d{6}$/, //邮编             mobile:/^(13|15|18)[0-9]{9}$/, //手机             notempty:/^\S+$/, //非空             picture:/(.*)\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$/, //图片             rar:/(.*)\.(rar|zip|7zip|tgz)$/, //压缩文件             date:/^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/, //日期             qq:/^[1-9]*[1-9][0-9]*$/, //QQ号码             tel:/^(([0+]\d{2,3}-)?(0\d{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})$/ //身份证         }

 

 

 

 经典Javascript正则表达式   (有很多不对的地方,记得适当修改)

 

匹配中文字符的正则表达式:

  [\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

*注

===============================

如果var s = “abacabefggeeii”

结果就不对了,结果为:abeicfgg

正则表达式的能力有限

===============================

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

 

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

s="http://blog.penner.cn/page1.htm"s=s.replace(/(.*\/){ 0, }([^\.]+).*/ig,"$2")alert(s)

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:

οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

用正则表达式限制只能输入全角字符:

οnkeyup="value=value.replace(/[^\uFF00-\uFFFF]/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,''))"

匹配非负整数(正整数 + 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-]+)+$

匹配url

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

匹配html tag

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

 

【作者】:
【出处】:
【声明】:所有博文标题后加(share)的表示收集的他人优秀文章,其余的则为原创。欢迎转载,但请在显要位置显示本文链接,并保留本段声明,否则追究法律责任,谢谢!
你可能感兴趣的文章
我的友情链接
查看>>
【Oracle经典】132个oracle热门精品资料——下载目录
查看>>
心理专家浅谈舍弃不必要的虚荣!
查看>>
Spring,Struts2,Hibernate简单搭建
查看>>
风起云涌,看云计算如何赋能媒体行业?
查看>>
SQLException: Communications link failure
查看>>
Python 面向对象编程——访问控制
查看>>
CGridCtrl控件类的用法
查看>>
松哥整理了 15 道 Spring Boot 高频面试题,看完当面霸
查看>>
Python爬虫的道德规范---robots协议
查看>>
vcenter 5.5 给esxi 配置分布式网络
查看>>
2015向混合云冲刺吧---IDC 2015年云计算预测报告分析
查看>>
LeetCode问题9
查看>>
安卓航班Android开发经典教程大总结----序言
查看>>
Linux查询系统配置常用命令
查看>>
战之二 安装企业中第二台域控制器(在同一局域网环境内)
查看>>
RabbitMQ的应用场景以及基本原理介绍
查看>>
httpd Makefile例子分析
查看>>
oracle数据库用户密码验证方式
查看>>
让Openerp的必填字段标签后面带上红色星号
查看>>