这个 .replace(/^[^:]+:/, '<b>$&</b>') 正则表达式在 Javascript 中是什么意思?



所以我想制作一个代码,使我的HTML列表变为粗体。但它需要在一开始就加粗,直到达到冒号。所以我搜索了一个我认为可以帮助我的代码。并从堆栈溢出中看到了这段代码。但是我没有使用for循环,而是使用foreach循环。

<ul>
<li>Apple: Has the color red</li>
<li>Orange: Has the color orange</li>
<li>Banana: Has the color yellow</li>
<li>Blackberries: Has the color purple</li>
<li>Avocado: Has the color green</li>
</ul>
<script type="text/javascript">
let list = document.querySelectorAll("ul li");
list.forEach((element) => {
element.innerHTML = element.innerText.replace(/^[^:]+:/, '<b>$&</b>');

</script>

它工作得很好!但我不明白/^[^:]+:/'<b>$&</b>'是什么意思或作用。

提前谢谢!

/^[^:]+:/<b>$&</b>第一部分是正则表达式。您可以看到经常包装在/ /中的正则表达式。正则表达式描述字符串中要匹配的模式。根据上下文的不同,不同的符号意味着不同的东西。

如果正则表达式以^开头,这意味着模式必须从字符串的开头匹配。innerText的开头是"苹果:…"中的A

接下来我们有[^:]+。方括号描述了我们正在寻找的字符。所以[a-z]意味着匹配每一个小写字符。这里不是a-z,而是^:。在字符括号内,^表示not,因此[^:]表示查找任何非冒号的字符。+在找到某个东西之后意味着找到其中的一个或多个。因此,[^:]+意味着找到一个或多个不是:的字符。

接下来我们有一个:,意思是找到一个冒号。因此,要读取整个正则表达式,/^[^:]+:/-从字符串的开头找到每个不是冒号的字符,然后找到一个冒号。如果它发现了这个,它就被认为是匹配的。

<b>$&</b>描述了如何处理匹配。如果您在第二个自变量Item -中写入,那么每一行都将去掉水果名称,并将其替换为Item - Has the color red。这里$&的意思是"使用我们匹配的东西"。因此,这将获取整个匹配,并将其封装在<b>..</b>中,使其加粗。

/^[^:]+:/它匹配从字符串开始到:的第一个匹配的任何字符将其替换为自身($&(,但由<b>标记,使其成为bold

"<li>Apple: Has the color red</li>".replace(/^[^:]+:/, '<b>$&</b>');

结果<li><b>Apple:</b> Has the color red</li>

最新更新