vue 正则匹配书名号中的内容并且把内容变红色
时间: 2023-11-22 20:53:36 浏览: 132
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
你可以使用正则表达式来匹配书名号中的内容,然后使用Vue的模板语法来将匹配到的内容变成红色。
下面是一个示例代码:
```html
<template>
<div>
<p v-html="highlightBookTitle('《JavaScript高级程序设计》是一本好书。')"></p>
<p v-html="highlightBookTitle('这本书叫做『Vue.js实战』。')"></p>
</div>
</template>
<script>
export default {
methods: {
highlightBookTitle(str) {
const regex = /《(.+?)》|『(.+?)』/g; // 匹配书名号中的内容
return str.replace(regex, '<span style="color:red">$&</span>'); // 将匹配到的内容用红色字体替换
}
}
}
</script>
```
在上面的代码中,我们定义了一个名为 `highlightBookTitle` 的方法,用于匹配书名号中的内容并将其变成红色字体。该方法接收一个字符串参数 `str`,并使用正则表达式 `/《(.+?)》|『(.+?)』/g` 匹配字符串中的书名号内容,然后使用 `String.prototype.replace()` 方法将匹配到的内容用 `<span style="color:red">$&</span>` 替换,其中 `$&` 表示匹配到的内容本身。
在模板中,我们使用 `v-html` 指令将方法返回的结果渲染到页面上。由于我们使用了 `<span>` 标签来包裹匹配到的内容,并设置了 `style` 属性,因此该内容会以红色字体显示出来。
请注意,由于使用了 `v-html` 指令,因此需要注意防止 XSS 攻击。如果你不确定输入字符串的安全性,请使用其他方式来渲染文本内容。
阅读全文