正则表达式的匹配规则

https://www.cnblogs.com/youyouyunduo/p/11706688.html
一些匹配规则

1字面量字符和元字符

  • 1.1(/./)点字符匹配
    点字符匹配除回车(\r)、换行(\n)、行分隔符(\u2028)、段分隔符(\u2029)以外的所有字符。
  • 1.2(/|/)or字符
  • 1.3(/$/)开头&结尾位置字符

2转义字符

  • '
  • `
  • ^
  • .
  • [
  • $
  • (
  • )
  • |
  • *
  • +
  • {
  • \

3特殊字符

  • \r回车
  • \n换行
  • \0null

4字符类

字符类class表示有一系列字符可供选择
[xyz]表示x\y\z之中任选一个匹配
1.^ 脱字符 [^xyz]表示除了xyz之外的数据都可以匹配
2.- 连字符,[abc]->[a-c];[0123456789]->[0-9]
连字符出现在方括号内才具备简写的作用
[\u4e00-\u9fa5]:匹配中文

5预定义模式

\d [0-9] 匹配数字
\w [A-Za-z0-9_] 匹配字母数字
\s [ \t\r\n\v\f] 匹配空格

6重复类

{n}:表示恰好重复n此;{n,}表示至少n次,{n,m}表示不少于n次,不多于m次

7量词符都是贪婪模式

?:{0,1} 0次或者1次
+:{1,} 1次或多次
*:{0,} 0次或多次

8非贪婪模式

??
+?
*?

'abb'.match(/ab*/) //['abb'] 匹配尽可能多个b
'abb'.match(/ab*?/) // ["a"] 匹配尽可能少个b

'abb'.match(/ab?/) // ["ab"]
'abb'.match(/ab??/) // ["a"]

9修饰符

i忽视大小写
g全局匹配
m多行匹配,修改^&变成\n

10组匹配

var m = 'abcabc'.match(/(.)b(.)/);
m
// ['abc', 'a', 'c']
/(.)b(.)\1b\2/.test("abcabc")
// true

2.非捕获组
(?:x)执行exec命令不反悔该组匹配的内容
3.先行断言x(?=y)x只有在y前面才匹配,返回x

var m = 'abc'.match(/b(?=c)/);
// ["b"]

4.先行否定断言x(?|y)x只有不在y前面才匹配返回x

'3.14'.match(/\d+(?!\.)/)
//14
//匹配不在.号前面的数字
// 手机号码的校验
const phoneReg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
// 身份证的校验
const idCardReg = /^[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]$/
// URL的校验
const urlReg = /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
// 邮箱的校验
const emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
// 日期 YYYY-MM-DD 校验
const dateReg = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/
// 年龄校验
const yearReg = /^(1\d{0,2}|[1-9]\d?)$/
posted @ 2022-08-12 15:55  zeal666  阅读(362)  评论(0)    收藏  举报