一、前言

  不好的习惯:1、每一次用到正则都是上网copy一份,也没有去学习思考,看看都是什么意思;

        2、一个项目里不同的地方用到了相同的校验,一直在重复的copy代码,并没有统一起来,万一哪天要修改规则,若是多人开发,每个人的正则校验不尽相同,改起来就很麻烦。

  先记录一下,后续慢慢学习,最后自己能看懂并会写常用的正则。

二、正则基本知识点

  1、横向模糊匹配{}

    一个正则可以匹配的字符串的长度不是固定的,使用量词可以达到这种目的。

    量词:比如{m , n} :表示连续出现最少 m 次,最多 n 次;跟在一个字符的后面就表示对该字符的限定。

    比如邮箱的校验:/^\w+@[a-z0-9]+\.[a-z]{2,4}$/,写在了[a-z]后面,表示可以有2到4位的字母;

    比如手机号的校验: /^1[3456789]\d{9}$/,跟在了\d后面,表示需要出现9个数字       

{m , n} :表示连续出现最少 m 次,最多 n 次
{m , } :表示至少出现m次
{m} :表示出现m次
?    :等价于{0,1} 表示出现或不出现
+ :等价于{1,} 表示至少出现1次
* :等价于{0,} 表示出现任意次,可以不出现

    比如邮箱的校验:/^\w+@[a-z0-9]+\.[a-z]{2,4}$/,写在了[a-z0-9]后面,可以出现0到9或者字母a-z的任意一个,至少一次

  2、纵向模糊匹配[]

    正则匹配的字符串对于某一位置上的字符来说,它可以有多种可能,不局限于某一类型,使用字符组可以达到这种目的。

    字符组:比如[abc],表示该字符是可以字符 "a"、"b"、"c" 中的任何一个。对于这一位置来说,我们可以有3种可能性。

    比如手机号的校验: /^1[3456789]\d{9}$/,它在第二个位置,根据一般手机运营商来说,提供手机第二位的数字可以是3到9的任意一个,才符合规范。

    如果字符组里表示的字符特别多,可以使用范围表示法,用连字符-来省略和缩写。

    比如邮箱的校验:/^\w+@[a-z0-9]+\.[a-z]{2,4}$/,它跟在@后面,根据我们邮箱的规范可知,@后面需要的是0到9或者字母a-z的任意一个

  3、常用的简写形式

    \d  :表示[0-9],表示一位数字
    \D  :表示[^0-9],表示除数字外的任意字符
    \w  :表示[0-9a-zA-Z_],表示数字、大小写字母和下划线
    \W  :表示[^0-9a-zA-Z_],非单词字符

    比如手机号的校验: /^1[3456789]\d{9}$/,结合后面的量词,\d在第三位,表示从第三位起,一共9位都是数字

三、表单常用

  可以把一个项目里用到的校验规则写在一个工具类里,这样可以保证一个项目里对同一个东西的校验是统一的,不用重复多余的堆砌代码。

class Validator {
//身份证校验
idCard(val){
return /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/.test(val)
} //手机号校验
phnoe(val){
return /^1[3456789]\d{9}$/.test(val)
} //邮箱
email(val){
return /^\w+@[a-z0-9]+\.[a-z]{2,4}$/.test(val)
} //普通护照
passport(val){
return /^((1[45]\d{7})|(G\d{8})|(P\d{7})|(S\d{7,8}))?$/.test(val)
} //台胞证
taiwanID(val){
return /^[a-zA-Z][0-9]{9}$/.test(val)
}
//港澳身份证
hkId(val){
return /^([A-Z]\d{6,10}(\w1)?)$/.test(val)
} //中文
chineseWord(val){
return /^[\u4e00-\u9fa5]*$/.test(val)
} //密码(不能是纯数字或字母)
psdRxp(val){
const numberRegexp = /^\d+$/;
const letterRegexp = /^[a-zA-Z]+$/;
return numberRegexp.test(val) || letterRegexp.test(val)
}
}
export default new Validator();

参考书目:《javascript正则表达式迷你书》

常用正则表达式(手机号、邮箱、URL地址、身份证等等)的更多相关文章

  1. 常用正则表达式(匹配URL/email/number)

    var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/ ...

  2. shell常用正则表达式

    转载自: http://www.cnblogs.com/linhaifeng/p/6596660.html 和 http://www.blogjava.net/jasmine214--love/arc ...

  3. Android之利用正则表达式校验邮箱、手机号、密码、身份证号码等

    概述 现在Android应用在注册的时候基本会校验邮箱.手机号.密码.身份证号码其中一项或多项,特此收集了相关的正则表达式给大家分享.除了正则表达式,文章末尾提供Demo中有惊喜哦! 具体验证的图片效 ...

  4. PHP表单常用正则表达式(URL、HTTP、手机、邮箱等)

    <?php /** * @description: 正则表达式匹配 */ class Regex { /** * @手机号 */ public static function Phone($su ...

  5. 验证中文、英文、电话、手机、邮箱、数字、数字和字母、Url地址和Ip地址的正则表达式

    Helper类代码 public class Helper { #region 单列循环 private Helper() { } private static Helper instance = n ...

  6. web开发常用的js验证,利用正则表达式验证邮箱、手机、身份证等输入

    正则表达式验证 //邮箱 \-])+\.)+([a-zA-Z0-]{,})+$/; email = document.getElementById("email").value; ...

  7. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式

    Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...

  8. php使用过滤器filter_var轻松验证邮箱url和ip地址等

    以前使用php的时候还不知道有过滤器filter这玩意,那时候判断邮箱.url和ip地址格式是否符合都是用正则表达式.后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库过滤器filter来 ...

  9. iOS - 正则表达式判断邮箱、身份证..是否正确:

    iOS - 正则表达式判断邮箱.身份证..是否正确: //邮箱 + (BOOL) validateEmail:(NSString *)email {     NSString *emailRegex ...

  10. 邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)

    简言 在做用户注册时,常会用到邮箱/邮件地址的正则表达式.本文列举了几种方案,大家可以根据自己的项目情况,选择最适合的方案. 方案1 (常用) 规则定义如下: 以大写字母[A-Z].小写字母[a-z] ...

随机推荐

  1. ChatterBot聊天机器人呢结构(五):ChatterBot对话流程

    原文地址:http://www.bugingcode.com/blog/ChatterBot_Dialogue_process.html 创建机器人 部署机器人的各种属性,根据前面的章节里聊天机器人的 ...

  2. ES介绍与实践

    一.ES介绍 1.基础概念介绍 1. 索引:Elasticsearch中的“索引”有点像关系数据库中的数据库. 它是存储/索引数据的地方: 2.分片 shard “分片”是Lucene的一个索引. 它 ...

  3. OpenStack官方镜像无法ssh登陆

    0x00 序 当前主流的Linux系统都有提供可以在OpenStack中直接使用cloud镜像,但当使用从官方网站下载的镜像创建云主机时,你会发现Linux下经常使用的ssh竟然无法登陆新创建好的云主 ...

  4. js作用域其二:预解析

    文章目錄 解析机制 JavaScript是一门解释型的语言 , 想要运行js代码需要两个阶段 编译阶段: 编译阶段就是我们常说的JavaScript预解析(预处理)阶段,在这个阶段JavaScript ...

  5. PHP RFI 的小tip

    有关PHP include的帖子网上已经很多了,wooyun的知识库里面也有一篇总结的很好的文章,传送门:http://drops.wooyun.org/tips/3827,今晚在看书的时候看到RFI ...

  6. 致敬尤雨溪,Vue.js 让我赚到了第一桶金

    最近这个 Vue.js 纪录片在前端圈广为传播,相信不少人已经看过了.第一次看编程领域的纪录片,感觉还挺新鲜的.这部 30 分钟左右的纪录片制作精良,主角是 Vue.js 作者尤雨溪,还穿插采访了框架 ...

  7. Channel Estimation for High Speed Wireless Systems using Gaussian Particle Filter and Auxiliary Particle Filter

    目录 论文来源 摘要 基本概念 1.时变信道 2.粒子滤波 3.高斯粒子滤波 4.辅助粒子滤波 比较 借鉴之处 论文来源 International Conference on Communicati ...

  8. css布局中的各种FC(BFC、IFC、GFC、FFC)

    什么是FC?FC(Formatting Context)格式化上下文,其实指的是一个渲染区域,拥有一套渲染规则,它决定了其子元素如何定位,以及与其他元素之间的关系和相互作用. 什么是BFC? BFC( ...

  9. 组件化思路:以selection为例子,使用prop-types实现组件化控制,重用

    需求 书接上文,UI 积累之select section 这里又来两个需求了. 当我点击选择了option后,我应该看到的是我选择的option的内容 多例重用,即同样是个selection,我只是需 ...

  10. 用 git 钩子,检测代码规范性(eslint、standard)

    最终实现效果说明:用 git commit 提交代码之前,利用 pre-commit git 钩子,实现代码规范检测(eslint.standard 规范),符合规范之后才可以提交到 git 仓库.这 ...