gpt4 book ai didi

javascript - 正则表达式匹配的奇怪行为

转载 作者:行者123 更新时间:2023-11-29 19:08:42 24 4
gpt4 key购买 nike

<分区>

Here is a Codepen version .

我的目标是遍历数组的元素,搜索匹配 ~@something@~ 的正则表达式,删除那些标识匹配项的“书挡”,然后.join() 数组。在以下示例中,结果应类似于 a/b/c

然而,我得到的结果是 a/~@b@~/c。更令人困惑的是,当我颠倒数组元素的顺序时,问题结果从 ~@b@~ 变为 ~@c@~。最后,让事情变得非常奇怪的是,问题似乎通过添加一个简单的 test 方法自行解决,该方法本身总是返回值 false。请参阅代码中的注释。亲眼看看。

是什么导致了这种奇怪的行为?迭代这些元素并进行我描述的替换的正确方法是什么?

function myFunction() {
var a = ["a", "~@b@~", "~@c@~"]
var re = /~@(.*?)@~/g;
var i = a.length;
// Uncomment below line to see the problem change from ~@b@~ to ~@c@~
//a.reverse();
while (i--) {
console.log('i', i, 'str', a[i]);
var match = re.exec(a[i]);
console.log('match', match);
// Uncomment the below line to see it work properly.
//console.log('test', re.test(a[i]));
if (match && match[0] && match[1]) {
a[i] = a[i].replace(match[0], match[1]);
console.log('a[i]', a[i]);
}
}
var res = a.join('/');
document.getElementById("demo").innerHTML = res;
}
<p>
My goal is to print the string: <code>a/b/c</code>. See weird <i>uncomment</i> fix in JS.
<button onclick="myFunction()">Click Here</button>
</p>
<p id="demo"></p>

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