Js:正则表达式(二)

1、匹配所有字符

语法: \^\\s\\S\\d\\D

javascript 复制代码
// 匹配所有字符
console.log("s121&!&@".match(/[^]/g)); // ['s', '1', '2','1', '&', '!','&', '@']
console.log("123asd".match(/[\d\D]/g)); // [ '1', '2', '3', 'a', 's', 'd' ]
console.log("123asd ".match(/[\s\S]/g)); // [ '1', '2', '3', 'a', 's', 'd', '']

2、i与g模式修正符

定义: i-不区分大小写 g-全局匹配

javascript 复制代码
let hd = "hoududunUiUa";
console.log(hd.match(/u/ig)); //[ 'u', 'u', 'u', 'U', 'U' ]
console.log(hd.replace(/u/ig, "@")); // ho@d@d@n@i@a

3、多行匹配修正符

语法: /abc/m

javascript 复制代码
// 多行匹配修正符
let str = `
    #1 js,200 #
    #2 php,200 #
    #3 houdunren.com # aw1w12
    #4 node.js,200 #
`;
let lesson = str.match(/^\s*#\d+\s+.+\s+#$/gm).map(v => {
    v = v.replace(/\s*#\d+\s*/, "").replace(/#/, "");
    [name, price] = [...v.split(",")]
    return { name, price };
});
console.log(JSON.stringify(lesson)); // [{"name":"js","price":"200 "},{"name":"php","price":"200 "},{"name":"node.js","price":"200 "}]

4、汉字与字符属性

语法: /\p{L}/gu-匹配所有字符 /\p{P}/gu-匹配特殊字符 /\p{sc=Han}/gu-匹配中文

javascript 复制代码
let sc = "匹配中文in1231@132.com";
// 匹配中文
console.log(sc.match(/\p{sc=Han}/gu)); //[ '匹', '配', '中', '文' ]
//匹配所有字符
console.log(sc.match(/\p{L}/gu)); //['匹', '配', '中','文', 'i',  'n','c',  'o',  'm']
// 匹配特殊字符
console.log(sc.match(/\p{P}/gu)); //[ '@', '.' ]

5、有效率的y模式

语法: /u/y - 连续地找匹配字符

javascript 复制代码
// 有效率的y模式
let qqStr = "ajs:123434343,12123232,0897231876281种你说哈看就阿克苏看";
reg = /(\d+),?/y;
reg.lastIndex = 4; // 从第4位开始匹配
let qq = [];
while ((res = reg.exec(qqStr))) {
    qq.push(res[1]);
}
console.log(qq); // [ '123434343', '12123232', '0897231876281' ]

6、区间匹配

语法: /0-9/-匹配数值0~9 /a-z/-匹配字母a~z

javascript 复制代码
// 区间匹配
console.log("asasjkl".match(/[a-z]/g)); // ['a', 's', 'a', 's', 'j', 'k', 'l']
console.log("123465".match(/[0-9]/g)); //['1', '2', '3', '4', '6', '5']
console.log("1234789".match(/[7-9]/g)); //['7', '8', '9']
// 注意: 只能按升序排列

7、排除匹配

语法: /\^ue/gi - 全局匹配不分大小写的字符,u、e除外

javascript 复制代码
// 排除匹配
console.log("abcdef".match(/[^ab]/gi)); // [ 'c', 'd', 'e', 'f' ]
console.log("ASCBefsgf12".match(/[^ab]/gi)); // ['S', 'C', 'e', 'f', 's', 'g', 'f', '1', '2']
相关推荐
晴天163 小时前
前端 postMessage 使用场景
前端·javascript·网络
zhanghaha13145 小时前
HTML系列教程:14_HTML 表单与输入框 <form>、<input> 零基础详解
java·前端·javascript
傻啦嘿哟10 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_9336707910 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
李少兄11 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
Seoyoneh11 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
Tangyuewei11 小时前
Java 写 Agent:模型只是组件
java·开发语言
小玮看世界12 小时前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python
繁星蓝雨13 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
Evand J13 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪