gpt4 book ai didi

javascript - 如何调试 JavaScript 中的正则表达式?

转载 作者:行者123 更新时间:2023-12-03 05:00:18 25 4
gpt4 key购买 nike

我对 JavaScript 和正则表达式都很陌生。我有一个简单的任务,将网页中的一系列 <%whatever%> 替换为 (whatever)。无论如何,regExp 仅在某些条件下有效。

我不确定我的表达式是否错误,或者我尝试访问 document.body.HTML 的方式是否错误。请注意代码中的“有效”和“无效”注释。

<html>
<head>
<script>
</script>
</head>
<body>
Hello, my items are <%abc%>, <%efg%>, <%hik%><p/>
<p/>
</body>
<script>
var Transform = function() {
var regExp = /<%\^?\w+?\.?\w+?%>/gi;
document.body.innerHTML = document.body.innerHTML.replace(/Hello/g,"Hi"); //works
document.body.innerHTML = document.body.innerHTML.replace(/my/g,"your"); //works
document.body.innerHTML = document.body.innerHTML.replace(/\<%/g,"("); //not working
document.body.innerHTML = document.body.innerHTML.replace(/%\>/g,")"); //not working
return;
}
teststr="<%abc%>";
teststr=teststr.replace(/\<%/g,"(");
teststr=teststr.replace(/%\>/g,")"); //works show as (abc)
console.log(teststr)
Transform();
</script>
</html>

最佳答案

代码存在一些问题:

  • <%abc%> (和其他)被转换为文本,因为它们是非法的 HTML 标签。所以当你查看document.body.innerHTML时,您会看到类似 &lt;%abc%&gt; 的内容反而。您可以使用.innerText来解决这个问题.innerHTML 的插图,具体取决于您需要执行的具体操作。
  • 开盘后的任何内容 <body>标签将被插入主体标签中。所以你的脚本也是 .innerHTML 的一部分。要解决此问题,您可以将脚本添加到 <head> 中并设置window.onload在主体设置后运行您的代码。或者,您可以将内容放入 <div> 中在体内进行替换。
  • 您正在获取.innerHTML 4 次,这可能会导致以后出现问题。您可以对同一字符串进行操作并设置 .innerHTML一次。

<html>
<head>
<script>
console.clear()
var Transform = function() {
var regExp = /<%\^?\w+?\.?\w+?%>/gi;
document.body.innerHTML = document.body.innerHTML
.replace(/Hello/g,"Hi") //works
.replace(/my/g,"your") //works
.replace(/&lt;%/g,"(") //now working!!
.replace(/%&gt;/g,")"); //now working!!
return;
}

window.onload = Transform;
</script>
</head>
<body>
Hello, my items are <%abc%>, <%efg%>, <%hik%><p/>
<p/>
</body>
</html>

如果某些内容不起作用,请从最接近不起作用的部分的点开始,然后向后逐步执行代码。将内容记录到控制台 ( console.log ) 以确保值符合您的预期。确保您的代码以正确的顺序运行,在记录值之后记录它们,诸如此类。

关于javascript - 如何调试 JavaScript 中的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42258538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com