【问题标题】:JavaScript: Wrap all text between apostrophes in a span [duplicate]JavaScript:将撇号之间的所有文本包装在一个跨度中[重复]
【发布时间】:2019-11-20 12:18:40
【问题描述】:

我有一小段文字: "some text" some more text "even more text"

我想做的是将撇号之间的所有内容都包装在一个跨度容器中,就像 hilight.js 一样。我真的找不到让它工作的方法。

谁能解释一下最理想的方法是什么?

var body = document.querySelector('body');

var code = body.innerHTML;
var code = code.replace(/"(.*?)"/g,"<span>---</span>");
body.innerHTML = code;
span {
  color: red;
}
<body>
<p>Corrent result:</p>
"some text" some more text "even more text"
<p>The result would be:</p>
<p><span>some text</span> some more text <span>even more text</span></p>
</body>

【问题讨论】:

  • --- 替换为$1
  • 你能解释一下它是如何工作的吗?
  • 我不确定我是否愿意这样做...浏览器会将$1 识别为变量
  • 不确定你的意思。此外,请确保您在最初是 HTML 且没有属性的内容上执行此操作。制造脚本注入漏洞或破坏真实世界的 HTML 很容易。那么:你是在 HTML 上还是在文本上这样做?

标签: javascript html


【解决方案1】:

你已经很接近了。您可以在替换字符串中使用$n 语法,该语法将对应于n'th 捕获组。

let x = '"yo" bro "more"';
let y = x.replace(/"(.*?)"/g, '<span>$1</span>');
console.log(y);

mdn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2014-03-20
    • 2021-06-20
    • 2015-12-20
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多