知识是需要系统的。就像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. BZOJ3669 [Noi2014]魔法森林(SPFA+动态加边)

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  2. 啥是ETL、ELT

    ETL就是Extract.Transfrom.Load即抽取.转换.加载三个英文单词首字母的集合.抽取:就是从源系统抽取需要的数据,这些源系统可以是同构也可以是异构的:比如源系统可能是Excel电子表 ...

  3. spring:自定义限定符注解@interface, 首选bean

    spring:自定义限定符注解@interface, 首选bean 1.首选bean 在声明bean的时候,通过将其中一个可选的bean设置为首选(primary)bean能够避免自动装配时的歧义性. ...

  4. WebAPI序列化后的时间中含有“T”的解决方法

    问题: { "name": "abc", "time": "2015-02-10T15:18:21.7046433+08:00&q ...

  5. 2015 Benelux Algorithm Programming Contest (BAPC 15)E - Excellent Engineers

    这题想了很久没思路,不知道怎么不sort维护二维的最小值 emmmm原来是线段树/树状数组,一维sort,二维当成下标,维护三维的最小值 #include<bits/stdc++.h> # ...

  6. ZeroClipboard 简单应用

    ZeroClipboard.config({ swfPath: "/scripts/ZeroClipboard.swf" }); var client = new ZeroClip ...

  7. java快捷键大全

    存盘 Ctrl+s(肯定知道) 注释代码 Ctrl+/ 取消注释 Ctrl+(Eclipse3已经都合并到Ctrl+/了) 代码辅助 Alt+/ 快速修复 Ctrl+1 代码格式化 Ctrl+Shif ...

  8. LeetCode OJ:Serialize and Deserialize Binary Tree(对树序列化以及解序列化)

    Serialization is the process of converting a data structure or object into a sequence of bits so tha ...

  9. New Concept English three (53)

    30w/m 56errors The Scandinavian countries are much admired all over the world for their enlightened ...

  10. UFLDL新版教程

    http://ufldl.stanford.edu/tutorial/ 还带编程作业.