IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JS 正则中的 exec replace 断言查找的使用 -> 正文阅读

[JavaScript知识库]JS 正则中的 exec replace 断言查找的使用

使用\将一些特殊字符进行转义 (如果你不清楚那个字符需要使用\ 都加上也没有问题)

() 作用 : 充当捕获组, 同时, 用于回引

无回引使用 (?:)

exec

在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null

var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('the quick brown for jumps over the lazy dog');
console.log(result) // object / null
// [
//   'quick brown for jumps',		捕获的全部内容
//   'brown',   捕获组
//   'jumps',   捕获组
//   index: 4,  开始匹配的 index
//   input: 'the quick brown for jumps over the lazy dog',
//   groups: undefined
// ]

replace

// 替换(非数字)(数字)(非字符)
var newString = 'abc12345#$*%'.replace(
  /([^\d]*)(\d*)([^\w]*)/,
  // 子串, 捕获, 偏移, 原始字符串
  (match, p1, p2, p3, offset, string) => [p1, p2, p3].join(' - ')
);
console.log(newString);  // abc - 12345 - #$*%

引用的使用

// 引用使用技巧
const str = 'l say: "l love you"'
const re = /"([^"]*)"/
console.log(str.replace(re, '{$1}'))

// 给捕获组取个名字
// l say: {l love you}
const re2 = /"(?<haha>[^"]*)"/g
console.log(str.replace(re2, '{$<haha>}'))

断言查找

向前断言查找 (?= )

(?=xxx) : 匹配的字符后面必须为 xxx

// (匹配的字符)后面必须为 script
const str = 'aaajavascriptaaa'
const re = /java(?=script)/i
console.log(re.exec(str))
// [
//   'java',		匹配的字符
//   index: 3,
//   input: 'aaajavascriptaaa', 
//   groups: undefined
// ]

// (匹配的字符)后面必须为 script, 且加上几个其他的捕获组
const str = 'aaajavascriptaaa'
const re = /java(?=script)([a-z])([a-z]\w*)/i
console.log(re.exec(str))
// [
//   'javascriptaaa',		匹配的字符
//   's',					第一个捕获组 ([a-z])
//   'criptaaa',			第二个捕获组 ([a-z]\w*)
//   index: 3,
//   input: 'aaajavascriptaaa', 
//   groups: undefined
// ]

否定式向前查找断言 (?! )
(?!xxx) : 匹配的字符后面必须不为 xxx

// (匹配的字符)后面必须不为 script
const str = 'javabean'
const re = /java(?!script)([a-z]\w*)/i
console.log(re.exec(str))
// [ 
//   'javabean',		匹配的字符
//   'bean',			第一个捕获组 ([a-z]\w*)
//   index: 0, 
//   input: 'javabean', 
//   groups: undefined 
// ]

(?<=xxx) : 匹配的字符前面必须为 xxx

// (匹配的字符)前面必须为 java
const str = 'javascript'
const re = /(?<=java)(\w*)/i
console.log(re.exec(str))
// [
//   'script',		匹配的字符
//   'script',		第一个捕获组
//   index: 4,
//   input: 'javascript',       
//   groups: undefined
// ]

// (匹配的字符)前面必须不为 java
const str = 'typescript'
const re = /(?!=java)(\w*)/i
console.log(re.exec(str))
// [
//   'typescript',
//   'typescript',
//   index: 0,
//   input: 'typescript',       
//   groups: undefined
// ]
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:02:06  更:2022-04-04 12:05:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:05:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码