js匹配两个特殊字符中间内容的正则以及html标签之间内容的匹配

匹配两个特殊字符

匹配两个特殊字符中间的内容,比如¥1234¥ 要匹配两个¥之间的数字:

// 使用正则
let reg = /(?<=¥).*?(?=¥)/;
let str = '¥1234¥';
// 使用
str.match(reg); // 输出 ['1234']

在这里插入图片描述
在这里不包含前面匹配的字符写法(?<=要匹配的开始字符),不包含后面要匹配的字符写法(?=要匹配的结束字符)

有了以上直接匹配特殊字符中间内容的方式,如果带上所要匹配的字符就更直接了

'¥1234¥'.match(/¥.*?(?=¥)/)[0]; // 输出 ¥1234

'¥1234¥'.match(/(?<=¥).*?¥/)[0]; // 输出 1234¥

'¥1234¥'.match(/¥.*?¥/)[0]; // 输出 ¥1234¥

不要觉得最后一种方式没有用的感觉,最后一种是在例如:

// 这样的字符串中抽离,以上其他方式一样,只是根据需要的结果使用就好
'das23213123¥1234¥dsaada31'.match(/¥.*?¥/)[0]; // 输出 ¥1234¥

匹配HTML标签之间的内容

有了上方匹配特殊字符的方式,直接将特殊字符改为html的标签即可,这里采用的单一标签的匹配方式,比如只匹配a标签或p标签等,话不多说上代码:

let dom = '<div><span>这个是内容一</span><span style="color: red;">这个是内容二</span></div>';
let domReg = /(?<=(<span[^>]*?>)).*?(?=(<\/span>))/g;
dom.match(domReg);

输出如下:
在这里插入图片描述
这是以span标签为例,你也可以将span改成其他标签,div,p标签等都可以。

批量处理匹配到的html内容

根据上边html的正则匹配,我们来对匹配到的内容做进一步的处理,经常会遇到要对某一种标签的内容增加修饰,比如将颜色统一改为绿色,代码如下:

let dom = '<div><span>这个是内容一</span><span style="color: red;">这个是内容二</span></div>';
let domReg = /(?<=(<span[^>]*?>)).*?(?=(<\/span>))/g;
dom = dom.replace(domReg, (str) => {
  console.log('正则匹配到的内容', str);
  return `<span style="color: green;">${str}</span>`;
});

完整代码实例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <h1>JS匹配特殊字符之间的内容以及标签内容</h1>
  <div id="content"></div>
</body>
<script>
  let dom = '<div><span>这个是内容一</span><span style="color: red;">这个是内容二</span></div>';
  let domReg = /(?<=(<span[^>]*?>)).*?(?=(<\/span>))/g;
  dom = dom.replace(domReg, (str) => {
    console.log('正则匹配到的内容', str);
    return `<span style="color: green;">${str}</span>`;
  });
  document.getElementById('content').innerHTML = dom;

</script>

</html>

以上就是这次所分享内容。
如有疑问可以留言,也可以到QQ群一起探讨:
QQ群1: 657011407, QQ群2: 492593055,也可以到微信找我 shenzhipeng1023

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在JavaScript中,使用正则表达式可以方便地实现替换操作。如果需要替换两个符号之间内容,可以使用正则表达式来匹配这个区间,然后将其替换成指定的字符串。具体的实现步骤如下: 1. 首先,需要使用正则表达式的捕获组来匹配两个符号之间内容。比如,如果想要替换双引号之间内容,可以使用正则表达式/"(.*?)"/g来匹配双引号中的任意字符,其中括号里的问号表示非贪婪匹配,避免匹配到多个双引号之间内容。 2. 接着,可以使用JavaScript的字符串替换函数replace()来实现替换操作。replace()函数接受两个参数,第一个参数是正则表达式,第二个参数是替换的字符串。在这里,将正则表达式传入replace()函数中,然后在第二个参数中指定要替换成的字符串即可。 例如,假设有一个字符串str,它包含了一个双引号之间内容需要被替换成新的字符串newStr,代码实现如下: var str = '这是一段"需要替换"的文本'; var newStr = '替换后的文本'; str = str.replace(/"(.*?)"/g, newStr); 上述代码中,使用正则表达式匹配了双引号之间内容,并将其替换成了新的字符串newStr。最终,字符串str的值将变成“这是一段替换后的文本的文本”。 ### 回答2: 正则表达式是一种强大的文本匹配和替换工具,在JavaScript中也被广泛使用。使用正则表达式可以方便地查找和替换文本中特定的字符字符串。如果我们要替换两个符号之间内容,可以使用正则表达式来实现。 首先,我们需要使用正则表达式来匹配要替换的内容正则表达式中有一些特殊字符可以用来匹配特定的字符字符串,比如 \b 表示单词的边界,\d 表示数字,\w 表示单词字符等等。在我们的情况下,可以使用括号()将要替换的内容括起来,然后使用 .+ 表示匹配任意字符。最后,在两个符号之间加上正则表达式即可。 例如,如果我们要将字符串中的两个花括号 {} 之间内容替换成另一个字符串,可以使用以下正则表达式: ``` var str = '{foo} bar {baz}'; str = str.replace(/\{(.+)\}/g, 'replacement'); console.log(str); // 'replacement bar replacement' ``` 其中,/\{(.+)\}/g 表示匹配两个花括号之间的任意字符(.+),并使用括号将匹配到的内容捕获起来。替换操作中的 'replacement' 就是我们要替换成的字符串。最后的 g 表示全局匹配,即将所有符合条件的内容都替换掉。 需要注意的是,正则表达式中的一些符号有特定的意义,比如花括号 {}、方括号 []、括号 () 等等,如果要匹配这些符号本身需要使用转义符 \,比如 \{ 表示匹配左花括号 {。 总之,使用正则表达式可以方便地替换两个符号之间内容,但需要注意正则表达式的语法和符号的特殊意义。 ### 回答3: 要使用正则表达式替换两个符号之间内容,需要先了解正则表达式的基本语法以及如何匹配符号。 首先,正则表达式是一种用来匹配字符串的模式工具,它可以匹配一定规则的文本,比如某个单词、某个字符集、某种结构等等。在 JavaScript 中,可以使用 RegExp 对象或者正则字面量来创建正则表达式。 其次,如果要匹配两个符号之间内容,可以使用正则表达式的分组(group)功能,用小括号将要匹配内容包裹起来,然后在替换的时候,只替换括号内匹配到的内容。 例如,要将字符串中两个引号之间内容替换为 "abc",可以使用如下代码: ``` let str = 'foo "bar" baz "qux"'; let newStr = str.replace(/"(.*?)"/g, '"abc"'); console.log(newStr); // 输出:foo "abc" baz "abc" ``` 在上面的代码中,正则表达式 /"(.*?)"/g 匹配两个双引号之间的任意字符(非贪婪匹配),然后在替换的时候,将匹配到的内容替换为 "abc"。 需要注意的是,在正则表达式中,一些特殊字符需要进行转义,比如双引号、反斜杠等等。另外,正则表达式还有一些高级用法,比如 lookahead(正向预查)和 lookbehind(反向预查)等等,可以根据实际需求进行学习和使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值