表单验证和正则表达式

正则表达式

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

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

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

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

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

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

定义正则表达式

  • 普通定义(字面量)

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

  • 0-9\]:数字字符0-9

量词

  • {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'))
相关推荐
Maggie_ssss_supp1 天前
Linux-正则表达式
linux·运维·正则表达式
IT陈图图2 天前
基于 Flutter × OpenHarmony 图书馆管理系统之构建借阅记录模块
flutter·正则表达式·openharmony
WHOVENLY2 天前
揭秘正则表达式的基础语法与应用
开发语言·javascript·正则表达式
IT陈图图3 天前
基于 Flutter × OpenHarmony 的正则表达式测试器开发实战
flutter·正则表达式·openharmony
不平衡的叉叉树5 天前
我们遇到了正则表达式的灾难性回溯问题
java·正则表达式
Meteors.5 天前
正则表达式及其常见使用(Kotlin版)
正则表达式
至此流年莫相忘5 天前
正则表达式之捕获分组——Python篇
python·正则表达式
西红市杰出青年5 天前
crawl4ai------AsyncPlaywrightCrawlerStrategy使用教程
开发语言·python·架构·正则表达式·pandas
噎住佩奇6 天前
正则表达式(Regex)入门
运维·正则表达式
Irene19917 天前
JavaScript 正则表达式 API 总结
正则表达式