常用正则表达式(手机号、邮箱、URL地址、身份证等等)
一、前言
不好的习惯: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地址、身份证等等)的更多相关文章
- 常用正则表达式(匹配URL/email/number)
var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/ ...
- shell常用正则表达式
转载自: http://www.cnblogs.com/linhaifeng/p/6596660.html 和 http://www.blogjava.net/jasmine214--love/arc ...
- Android之利用正则表达式校验邮箱、手机号、密码、身份证号码等
概述 现在Android应用在注册的时候基本会校验邮箱.手机号.密码.身份证号码其中一项或多项,特此收集了相关的正则表达式给大家分享.除了正则表达式,文章末尾提供Demo中有惊喜哦! 具体验证的图片效 ...
- PHP表单常用正则表达式(URL、HTTP、手机、邮箱等)
<?php /** * @description: 正则表达式匹配 */ class Regex { /** * @手机号 */ public static function Phone($su ...
- 验证中文、英文、电话、手机、邮箱、数字、数字和字母、Url地址和Ip地址的正则表达式
Helper类代码 public class Helper { #region 单列循环 private Helper() { } private static Helper instance = n ...
- web开发常用的js验证,利用正则表达式验证邮箱、手机、身份证等输入
正则表达式验证 //邮箱 \-])+\.)+([a-zA-Z0-]{,})+$/; email = document.getElementById("email").value; ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- php使用过滤器filter_var轻松验证邮箱url和ip地址等
以前使用php的时候还不知道有过滤器filter这玩意,那时候判断邮箱.url和ip地址格式是否符合都是用正则表达式.后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库过滤器filter来 ...
- iOS - 正则表达式判断邮箱、身份证..是否正确:
iOS - 正则表达式判断邮箱.身份证..是否正确: //邮箱 + (BOOL) validateEmail:(NSString *)email { NSString *emailRegex ...
- 邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)
简言 在做用户注册时,常会用到邮箱/邮件地址的正则表达式.本文列举了几种方案,大家可以根据自己的项目情况,选择最适合的方案. 方案1 (常用) 规则定义如下: 以大写字母[A-Z].小写字母[a-z] ...
随机推荐
- NERDTree快捷键
切换工作台和目录 ctrl + w + h 光标 focus 左侧树形目录ctrl + w + l 光标 focus 右侧文件显示窗口ctrl + w + w 光标自动在左右侧窗口切换ctrl + w ...
- 在虚拟机单机部署OpenStack Grizzly
安装过程 安装Ubuntu 我手头有的是Ubuntu Server 12.04 64位版,就直接用了,默认安装即可,配置的时候很简单,如下 内存:1G 硬盘:20G 处理器:2 网络:NAT 装好以后 ...
- LeetCode~移除元素(简单)
移除元素(简单) 1. 题目描述 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使 ...
- MongoDB监控及报警
转载请注明出处:https://www.cnblogs.com/shining5/p/11142357.html MongoDB监控及报警 Prometheus是由SoundCloud开发的开源监控报 ...
- 压力测试(八)-多节点JMeter分布式压测实战
1.Jmeter4.0分布式压测准备工作 简介:讲解Linux服务器上jmeter进行分布式压测的相关准备工作 1.压测注意事项 the firewalls on the systems are tu ...
- sql02
1.小练习: 一切数据都是有用的,当我们删除时只是象征性设置一个标志位: 2.SQL学习 1)创建数据库 create database DbName; 使用--注释 多行注释/**/ 2)删除数据库 ...
- javascript设计模式--策略模式
javascript策略模式总结 1.什么是策略模式? 策略模式的定义是:定义一系列的算法,把他们独立封装起来,并且可以相互替换. 例如我们需要写一段代码来计算员工的奖金.当绩效为a时,奖金为工资的5 ...
- 使用HBuilder开发移动APP:开发环境准备(转)
一直想开发个APP玩玩的,但是作为一个PHP码农,需要新学习JAVA或者Object C,这也是一直没能实现这个目标的原因.但是现在HTML5+.APPCAN.apicloud很多工具利用前端技术就能 ...
- React Native 在 Airbnb(译文)
在Android,iOS,Web和跨平台框架的横向对比中,React Native本身是一个相对较新且快速开发移动的平台.两年后,我们可以肯定地说React Native在很多方面都是革命性的.这是移 ...
- Echarts 自定义legend图片,修改点击之后的颜色图解
第一个问题:echarts 可以自定义图例的图标,百度上很多回答都是引用的相对路径,但是不知道为啥,我的vue项目就是引用不显示,在network里面找不到相应图片 后来我想了个法子,就是先获取到这个 ...