知识是需要系统的。就像js正则用了那么多次,却还是浑浑噩噩,迫切需要来一次整理,那么来吧!

基本知识

元字符

  • \d 匹配数字等于[0-9]
  • \w 匹配字母、数字、下划线、中文
  • \s 匹配任意空白字符
  • . 匹配除了换行符以外的任意字符
  • ^ 匹配开始
  • $ 匹配结束
  • \b 匹配开始或结束
//元字符的使用

/^\d$/ 匹配一个数字
/^\w/ 匹配开头是字母、数字、下划线或汉字
/^\s$/ 匹配一个空白符
/\bhi\b/匹配hi

重复字符

  • *匹配0次或多次
  • ?匹配0次或1次
    • 匹配1次或多次
  • {n}匹配n次
  • {m,}匹配最少m次
  • {n,m}匹配n到m次
//重复字符的使用
/^\d*/ 匹配数字0次或多次
/^\d?$/ 出现数字一个或0次
/^\d+$/ 匹配数字一次或多次
/^\d{3}$/ 数字出现三次890 078...
/^\d{3,}$/ 匹配最少3次
/^\d{3,5}$/ 匹配数字3-5次

转义字符

\  比如匹配*,而*在正则中匹配0个或多个,所以匹配*本身需要用 \*

在匹配域名的时候
ljmfitness.com /^ljmfitness\.com$/,在其中\.为转义字符
C:\windows 用 /^C:\\windows$/来匹配

反义

  • \W 匹配除字母、数字、下划线、汉字的字符

  • \S 匹配除空白符意外的任意字符

  • \D 匹配出数字外的任意字符

  • \B 匹配不是开始和结束的位置

  • [^x] 匹配除了x外的任意字符

  • [^xsa] 匹配除了xsa 这几个字符以外的任意字符

分支(类似于或)

/1234|abcd/ 这个表达式匹配含1234的字符串或者abcd的字符串

注:字符串从左到右验证,当字符串满足前一部分(1234)时,就不再验证后一部分了(abcd)

分组

当一种情况出现重复多次,我们可以选择分组
比如:/(22\.){3}/ 匹配含22.22.22.
/((2[0-4]\d|25[0-5]|[01]?\d\d)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d)/ 匹配ip地址

后向引用

/\b(\w+)\b\s+\1\b/ 这个匹配重复的单词go go
首先\w+ 匹配一个单词 \s空白字符 \1匹配\w (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置 var str1 = "bedroom";
var str2 = "bedding";
var reBed = /(bed(?=room))///在我们捕获bed这个字符串时,抢先去看接下来的字符串是不是room
alert(reBed.test(str1));//true
alert(reBed.test(str2));//false var str1 = "bedroom";
var str2 = "bedding";
var reBed = /(bed(?!room))/ //要来它后面不能是room
alert(reBed.test(str1))//false
alert(reBed.test(str2))//true

常用正则整理

  • 手机号码

方法一:

<input type="text" id="demo" value=""/>
var str = document.getElementById('demo').value;
var reg = /^1[34578]\d{8}$/;
if(reg.test(str)){
alert('验证通过')
}else{
alert('验证不通过')
}

方法二:

var str = '23232434';
var reg = /^\d*$/
if(str.match(reg)){
console.info('验证通过')
}else{
console.info('验证不通过')
}
  • 邮箱
/^([a-zA-Z0-9]+[-|_|\.]?)*[a-zA-Z0-9]+@([A-Za-z0-9]+[-|_|\.]?)*[a-zA-Z0-9]+\.[A-Za-z]{2,3}$/;
  • 密码
//字母数字下划线组成6-20位
/^[a-zA-Z0-9_]{6,20}/
//验证密码同时包含字母数字特殊字符混合8-20位
/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,20}$/
  • 验证码
//四位数字
/^\d{4}$/
//四位数字或字母
/^[0-9a-zA-Z]{4}/
//四位字母
/^[a-zA-Z]{4}/
  • 验证身份证号
/^\d{15}|\d{17}[x|X|\d]$/
  • 验证中国企业名称(中文,或中文+小括号)
/^[\(|()]?[\u4e00-\u9fa5]+[\(|\(|\)|\)]?[\u4e00-\u9fa5]*[\(|\(|\)|\)]?[\u4e00-\u9fa5]+[\)\)]?$/

js正则基础总结和工作中常用验证规则的更多相关文章

  1. 工作中常用的js、jquery自定义扩展函数代码片段

    仅记录一些我工作中常用的自定义js函数. 1.获取URL请求参数 //根据URL获取Id function GetQueryString(name) { var reg = new RegExp(&q ...

  2. 【python正则】工作中常用的python正则代码

    工作中常用的一些正则代码: 01.用户名正则 import re # 4到16位(字母,数字,下划线,减号)if re.match(r'^[a-zA-Z0-9_-]{4,16}$', "ab ...

  3. 【基础】工作中常用的linux命令,经常会被面试官问到

    前言 面试经常会问到一些Linux操作命令,下面就工作中常用的和面试问的频率较高的命令做详细描述. 常用命令 修改密码:passwd 用户名 切换用户名:su 用户名 查看当前路径:pwd 调整路径: ...

  4. 工作中常用到的Java集合类有哪些?

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y Java集合是我认为在Java基础中最最重要的知 ...

  5. 工作中常用的Linux命令:mkdir命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...

  6. 工作中常用的Linux命令:crontab命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

  7. 工作中常用的Linux命令:ipcs/ipcrm命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...

  8. 工作中常用的Linux命令:find命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...

  9. 工作中常用的QTP操作Excel函数

    前言 本文只是对工作中常用的EOM相关函数的整理,并不是要写个大而全的操作手册,如果想对EOM有更多的了解可以参考QTP的帮助文档或查看QTP安装目录\CodeSamplesPlus\UsingExc ...

随机推荐

  1. Qt 安装事件过滤器installEventFilter

    Qt 安装事件过滤器installEventFilter (2013-01-28 14:29:18) 转载▼   分类: 工作笔记 Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他 ...

  2. network namespace连接的4种方法及性能

    veth pair # add the namespaces ip netns add ns1 ip netns add ns2 # create the veth pair ip link add ...

  3. js装饰者模式

    装饰者模式是为已有的功能动态地添加更多功能的一种方式.当系统需要新功能的时候,是向旧的类中添加新的代码.这些新加的代码通常装饰了原有类的核心职责或主要行为,在主类中加入了新的字段,新的方法和新的逻辑, ...

  4. 基于vue的滚动条组件之--element隐藏组件滚动条scrollbar使用

    在项目中,总是需要用到滚动条,但windows浏览器默认的滚动条是很丑的,为了页面美观,可以考虑优化滚动条样式.  vue Element UI官方文档上并没有放出滚动条相关的示例说明,但是实际上是有 ...

  5. 项目管理理论与实践(4)——UML应用(上)

    本篇文章介绍UML的相关知识.参考<UML从入门到精通> 一.UML综述 1. UML简介 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件 ...

  6. app-前端性能测试

    前端性能测试,主要分为七个部分: 启动时间.CPU.流量.电量.内存.FPS(每秒钟的帧数).过度渲染 主要测试的内容: 启动时间:主要测试app在启动过程中的耗时情况 CPU:主要测试app在使用过 ...

  7. SpringBoot_06_使用Swagger2构建强大的RESTful API文档

    二.参考资料 1.Spring Boot中使用Swagger2构建强大的RESTful API文档 2.

  8. svn默认地址老发生改变,记下默认路径

    C:\Users\Administrator\AppData\Roaming\Subversion

  9. BZOJ- 2733: 永无乡 (并查集&线段树合并)

    题意:给定N个节点,K次操作,操作有两种,1是合并两个集合,2是求某个集合的第K大(从小到大排序). 思路:合并只要启发式即可.此题可以用线段树,保存1到N的排序的出现次数和. 复杂度O(NlogN) ...

  10. Redis底层探秘(六):对象多态及回收

    本篇是我们redis系列的最后一篇,整个系列其实是我学习<redis设计与实现>的笔记,这本书感觉不错,推荐使用redis的小伙伴都可以看看. 整个系列的文字都比较干,很多数据结构和C语言 ...