const keyword = '(某个字符串)'
const reg = /<span class="logs>(.+?)<\/span>/g;
newStr = newStr.replace(reg, word => {
const newRe = new RegExp(keyword, 'g');
return word.replace(newRe, `<span style="color:red;">${keyword}</span>`);
});
如上的正则替换中,我想匹配一长串字符串中所有'<span class="logs>(.+?)<\/span>'这种格式的,
然后再匹配出来的所有字符串中进行二次匹配,
但是这次的匹配只匹配span标签体内的内容,
在标签体内容中查找keyword关键字,如果匹配到再进行替换,
所以我该如何只对第一次匹配到的内容中的(.+?)部分进行二次替换?
您可以使用 (?:) 来捕获多个可能的子字符串,并使用正则表达式 .+? 来匹配子字符串,而不是使用 .+ 来匹配一个字符串中的任意字符。
```javascript
const keyword = '<span class="logs>(.+?)<\/span>';
const reg = /<span class="logs>(.+?)<\/span>/g;
const newStr = newStr.replace(reg, (match, group1) => {
const newMatch = match.replace(group1, `<span style="color:red;">${group1}</span>`);
return newMatch;
});
console.log(newStr); // 输出: <span style="color:red;">(某个字符串)</span>
```
replace 方法用于字符串的替换操作
let str = 'wgchen.blog.csdn.net';
web = str.replace("wgchen", "willem");
console.log(web); // willem.blog.csdn.net
默认只替换一次,如果全局替换需要使用正则。
let str = "2023/02/12";
console.log(str.replace(/\//g, "-")); // 2023-02-12
使用字符串替换来生成关键词链接
const word = ["php", "css"];
const string = "我喜欢学php与css知识";
const title = word.reduce((pre, word) => {
return pre.replace(word, `<a href="?w=${word}">${word}</a>`);
}, string);
document.body.innerHTML += title;
使用正则表达式完成替换
/*正则表达式修饰符
/u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字)
/g 全局匹配(全文查找出现的所有匹配字符,返回的结果可以是多个;如果不加/g最多只会匹配一个)
*/
let res = "wgchen.博客.csdn.net".replace("博客", str => {
return "blog";
});
console.log(res); // wgchen.blog.csdn.net