JS正则表达式

概念

正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

语法

正则表达式有三种形式:字面量,构造函数和工厂符号

/pattern/flags
new RegExp(pattern [, flags])
RegExp(pattern [, flags])

参数
pattern:正则表达式的文本
flags:可省略,可有以下组合

  • g:全局匹配;找到所有匹配,而不是在第一个匹配后停止
  • i:忽略大小写
  • m:多行;将开始和结束字符(^和$)视为在多行上工作(也就是,分别匹配每一行的开始和结束(由 \n 或 \r 分割),而不只是只匹配整个输入字符串的最开始和最末尾处。
  • u:Unicode;将模式视为Unicode序列点的序列
  • y:粘性匹配; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不尝试从任何后续的索引匹配)。
  • s:dotAll模式,匹配任何字符(包括终止符 ‘\n’)。

特殊字符

字符类别

  • . :(点号,小数点) 匹配任意单个字符,但是行结束符除外:\n \r \u2028\u2029
  • \d :匹配任意阿拉伯数字。等价于[0-9]
  • \D :匹配任意一个不是阿拉伯数字的字符。等价于[^0-9]
  • \w :匹配任意来自基本拉丁字母表中的字母数字字符,还包括下划线。等价于 [A-Za-z0-9_]
  • \W :匹配任意不是基本拉丁字母表中单词(字母数字下划线)字符的字符。等价于 [^A-Za-z0-9_]

边界

  • ^ :匹配输入开始。
  • $ :匹配输入结尾。

数量词

  • x* :匹配前面的模式 x 0 或多次。
  • x+ :匹配前面的模式 x 1 或多次。等价于 {1,}
  • x? :匹配前面的模式 x 0 或 1 次。
  • x(?=y) :只有当 x 后面紧跟着 y 时,才匹配 x
  • x|y :匹配 xy

常用正则验证

用过的

// 中文、大小写字母(a-z)、数字(0-9)和(-_)的组合
let pattern = /^[a-zA-Z0-9\u4e00-\u9fa5-_]+$/;
// 限制输入空格
xx.replace(/\s+/g,"")
// 最多10位小数
xx.replace(/^(\.*)(\d+)(\.?)(\d{0,10}).*$/g, '$2$3$4')
// 小数点前最多三位,小数点后最多10位
pattern: /^\d{1,3}(\.\d{1,10})?$/

手机号

//手机号
/^1[3456789]\d{9}$/

//国家(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)
(/^(([0+]d{2,3}-)?(0d{2,3})-)?(d{7,8})(-(d{3,}))?$/.test(this.Trim()))

//验证手机号
/^(?:13d|15[89])-?d{5}(d{3}|*{3})$/.test(this.Trim())

//电话验证
var reg = /^([0-9]|[-])+$/g;

//11位数字,以1开头手机号
var reg = /^1\d{10}$/;

//区号+号码,区号以0开头,3位或4位;号码由7位或8位数字组成;区号与号码之间可以无连接符,也可以“-”连接
/^0\d{2,3}-?\d{7,8}$/

//手机号前带86或是+86
(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})

//电话号码与手机号码同时验证
(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})

表单验证

//是否带有小数
/^\d+\.\d+$/

//校验是否中文名称组成
/^[\u4E00-\u9FA5]{2,4}$/

//校验是否全由8位数字组成
/^[0-9]{8}$/

//校验电话码格式
/^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/

//校验邮件地址是否合法
/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/

//1位到8位数字,可以0,最多两位小数
/^\d{1,8}(\.\d{1,2})?$/

//强制两位小数
pattern: /^(([1-9]{1}\d*)|(0{1}))(\.\d{2})$/

身份证

//身份证正则表达式(15位)
/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/

//身份证正则表达式(18位)
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/

//身份证正则合并
(^\d{15}$)|(^\d{17}([0-9]|X)$)

提取信息

//提取信息中的网络链接
(h|H)(r|R)(e|E)(f|F)* = *('|")?(\w|\\|\/|\.)+('|"|*|>)?   

//提取信息中的邮件地址
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*   

//提取信息中的图片链接
(s|S)(r|R)(c|C)* = *('|")?(\w|\\|\/|\.)+('|"|*|>)? 

//提取信息中的IP地址
(\d+)\.(\d+)\.(\d+)\.(\d+)     

//提取信息中的中国手机号码
(86)*0*13\d{9}     

//提取信息中的中国固定电话号码
(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}     

//提取信息中的中国电话号码(包括移动和固定电话)
(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}   
  
//提取信息中的中国邮政编码
[1-9]{1}(\d+){5}     

//提取信息中的中国身份证号码
\d{18}|\d{15}     

//提取信息中的整数
\d+     

//提取信息中的浮点数(即小数)
(-?\d*)\.?\d+     

//提取信息中的任何数字
(-?\d*)(\.\d+)?   

//提取信息中的中文字符串
[\u4e00-\u9fa5]*     

//提取信息中的双字节字符串  (汉字)
[^\x00-\xff]*

参考文章
RegExp
JavaScript 正则表达式
js手机号码正则表达式
小数点后保留2位小数的正则表达式

补充正则表达式校验好的文章
密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值