表单验证和正则表达式

正则表达式

使用单个字符串来表述,匹配一系列符合某个句法规则 的 字符串搜索模式

  • 搜索模式可以用于文本搜索和文本替换

    • 是由一个字符序列形成的搜索模式

    • 当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的 内容

    • 正则表达式可以是一个简单的字符,或一个更复杂的模式

    • 正则表达式可用于所有文本搜索和文本替换的操作

定义正则表达式

  • 普通定义(字面量)

const reg = / 123 /i (i, g,m,匹配模式)

  • 构造函数

const regexp = new RegExp("123");

//相当于 /123/

const regexp = new RegExp("123","i);

//相当于/123/i;
const pattern = "123";

const flags = "i";

const reg = new RegExp(pattern,flags);

【匹配模式】

  • i (ignoreCase):不区分大小写的匹配

  • g(global) : 全局匹配,并非查到第一个字符就停止

  • m (multiline) :换行匹配

符号

边界符

  • ^ :表示匹配行首
  • $:表示匹配行尾
  • \b :可以将单词分隔开

const = /^\bcat\b&/g;在全局匹配下,只找这一个单词

元字符

  • *:匹配前面字符的零次或多次
  • ?:匹配前面字符的零次或一次
  • +:匹配前面字符的一次或多次
  • . :任意字符,除换行符外\n\t\v\f\r
  • | :逻辑符用于分开两个句法,用于分支结构

字符类

  • a-z:小写字母a-z
  • A-Z:大写字母A-Z
  • 0-9:数字字符0-9
  • \^abc:匹配除abc外的任何字符

量词

  • {n}:匹配前一个字符n次
  • {n,}:匹配前一个字符n次以上
  • {n,m}:匹配前一个字符n次到m次之间

预定义字符

  • \d:数字字符 相当于0-9
  • \w:相当于a-zA-Z0-9_中的任意字符
  • \D:非数字字符\^0-9
  • \W:相当于\^a-zA-Z0-9_
  • \s:匹配任意空白字符(空格,制表符,换行符等)
  • \S:匹配任意非空白字符

转义字符

\ : 转移特殊字符,使其失去特殊含义

\. : 就是.

用在邮箱上

复制代码
'[\w\.]+@[\w\.]+\.\w+'

?!正向取反

断言类型 语法 含义 示例
正向先行断言 ?=Y X后面必须跟着Y \d(?=px) "1px"
正向后行断言 ?<=Y X前面必须是Y (?<=Y\)\\d+ "22"
负向先行断言 ?!Y X后面不能跟着Y \d(?!px) "1"
负向后行断言 ?<!Y X前面不能是Y (?<!\$)\d+ "22"

贪婪匹配和懒惰匹配

贪婪匹配就是尽可能多匹配

懒惰匹配就是最少次的匹配 与贪婪模式的区别就是 懒惰模式加了个 ?

比如

a.*\d 匹配"ab3ab3ab3" 中的 "ab3ab3ab3"

而 a.*?\d 匹配"ab3ab3ab3"中的"ab3";

分组和捕获

用() 隔开

复制代码
const reg =/^(\d{4})-(\d{2})-(\d{2})$/
const date = '2025-08-10';
console.log(reg.test(date));
//true
console.log(date.replace(reg,'$2/$3/$1') //   08/10/2025

分支结构

用 | 分开

复制代码
const st = "学前端找java"//true
const sr = "学java找前端"//true

const str = "学什么关我啥事"//false
const reg = /前端|java/
console.log(reg.test(st));
console.log(reg.test(sr));
console.log(reg.test(str));

做一些示例

复制代码
 //密码匹配  6-16位 数字或者下划线
        const pwdreg = /^\w{6,16}$/
        const pwd = 'Yang5866121_';
        console.log(pwdreg.test(pwd));

//匹配16进制的颜色板 #f1234f  #fff
        const reg = /^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/
        const color = '#f0ff0f'
        const color1 = '#aaa'
        const color2 = '#123aaa'
        const color3 = '#qqqqq'
        console.log(reg.test(color))
        console.log(reg.test(color1))
        console.log(reg.test(color2))
        console.log(reg.test(color3))

//24小时匹配  08:10 23:10 12:08
        //需要一个一匹配
        const reg = /^([01][0-9]|2[0-3]):[0-5][0-9]$/
        const time = '18:10'//true
        const time1 = '02:09'//true
        const time2 = '22:59';//true

//手机号脱敏
        //字符串的方法
        // const str = "13220302223"
//console.log(str.substring(0, 3) + '****' + str.substring(7, 11))
        // 正则表达式的方法

        const reg = /^(1[3-9]\d)(\d{4})(\d{4})$/
        const str = '15512725217';
        console.log(str.replace(reg, '$1****$3'))
相关推荐
吴声子夜歌1 天前
正则指引——Ruby
开发语言·正则表达式·ruby
吴声子夜歌2 天前
正则指引——Golang
开发语言·golang·正则表达式
吴声子夜歌3 天前
正则指引——PHP
开发语言·正则表达式·php
吴声子夜歌4 天前
正则指引——断言
正则表达式
吴声子夜歌5 天前
正则指引——匹配原理
java·正则表达式
吴声子夜歌6 天前
正则表达式——环视
开发语言·正则表达式
吴声子夜歌6 天前
正则表达式——边界
正则表达式
营养充电站7 天前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
吴声子夜歌7 天前
正则表达式——字符组
正则表达式