一、前言

  不好的习惯: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. Starting php-fpm [18-Jun-2019 12:56:59] NOTICE: PHP message: PHP Warning: Version warning提示报错解决

    php-fpm在命令行重启时出现如下提示信息在终端上,虽然不影响使用,但是不够干净利落,参考了一篇国外博客得以解决,参考链接:https://community.centminmod.com/thre ...

  2. 添砖加瓦:[OpenCV]入门(一)

    1.OpenCV安装 (1)下载: 本文采用的是源码的方式进行安装,源码可以从OpenCV官网下载.这里以3.4.1为例. (2)安装 这里下载到的文件为3.4.1.zip."unzip 3 ...

  3. 7/8段码管(LED)

    LED显示器在许多的数字系统中作为显示输出设备,使用非常广泛.它的结构是由发光二极管构成的a.b.c.d.e.f和g七段,并由此得名,实际上每个LED还有一个发光段dp,一般用于表示小数点,所以也有少 ...

  4. 模拟HTTP请求超时时间设置

    HTTP请求有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间(请求资源超时时间). 使用curl命令行 连接超时时间用 --connect-timeout 参数来指定 数据传输的最大 ...

  5. html|Area

    http://tomys.win/   HTML图片热区Area map的用法只是在上学的时候学习到过,在实际工作中一直没用过,如果 不是这次紧急任务,可能永远都不会想起这个功能.在一些特殊的html ...

  6. 5——PHP逻辑运算符&&唯一的三元运算符

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  7. git问题待更新

    git pull failed 错误解决 情况: 刚开始的项目,需要创建一个项目,然后pull从远端的项目,创建分支dev,然后从dev分支开始拉取远端的代码 出现错误,说git pull faile ...

  8. 7-1 jmu-python-汇率兑换 (10 分)

    7-1 jmu-python-汇率兑换 (10 分)   按照1美元=6人民币的汇率编写一个美元和人民币的双向兑换程序 输入格式: 输入人民币或美元的金额,人民币格式如:R100,美元格式如:$100 ...

  9. Android Base64图片无法长按保存 问题解决

    踩了一个巨坑. 目前微信ios/android 均能长按保存src=base64的图片  (微信android x5 专门解决了这个问题); 但是android其他App没有针对解决这个系统问题(姑且 ...

  10. Python 存储数据到json文件

    1 前言 很多程序都要求用户输入某种信息,程序一般将信息存储在列表和字典等数据结构中. 用户关闭程序时,就需要将信息进行保存,一种简单的方式是使用模块json来存储数据. 模块json让你能够将简单的 ...