如何解决使用JavaScript /正则表达式替换>>大于符号的两倍
我需要将“ >>”替换为“ /” 字符串:测试2 >> Cat >> Cat2 变成:测试2 / Cat / Cat2
请知道我花了很多时间阅读所有堆栈溢出和访问小提琴,但我做不到这一点。 我使用了https://regex101.com/和https://regexr.com/在线Regex工具,他们确认RegEx很好。 这些中的每一个都在Regex测试工具中测试过,但是我仍然没有获得我期望的结果。 我不能共享代码,但这是一个演示。
<span id="catidX"> Test 2 >> Cat >> Cat2 >> Cat4 || //// Cat /// Cat2 // Cat4 // CCat / CCat2 // CCat3 ///</span>
<script>
var str = document.getElementById("catidX").innerHTML;
//var resA = str.replace(/[>]{2,}/g,"/"); - Attempt
//var resA = str.replace([>]{2,"/"); - Attenmpt
//var resA = str.replae(/>{2,"/"); - Attenmpt
var resA = str.replace(/>>|>{2,"/");
var resB = resA.replace(/\/\//g,"/");
document.getElementById("catidX").innerHTML = resB;
</script>
上面的代码产生结果
Test 2 >> Cat >> Cat2 >> Cat4 >> Detail || -- Cat -/ Cat2 - Cat4 - || CCat / CCat2 - CCat3 -/
我只是将其传递给替换,以查看字符串的两个部分中的结果。
更新
- 根据用户的一项有用评论-我添加了console.log(resB)来查看输出内容...不是>而是html的>-&gt
有了该信息-我编辑了该行,但仍然没有成功
var resA = str.replace(/>{2,"/");
解决方法
尝试此代码
var str = "Test 2 >> Cat >> Cat2 >> Cat4"
str.replace(/>>/gi,"/");
result : "Test 2 / Cat / Cat2 / Cat4"
,
您可以使用以下正则表达式:
/([>]{2})(?=[\s])+/g
,
这是我要这样做的方式:
您将需要使用replace()
修饰符,使用正则表达式来调用>>
,该正则表达式与g
的所有出现全局匹配
let newText = oldText.replace(/>>/g,"/");
let btn = document.querySelector("#start");
let span = document.querySelector("#catidX");
btn.addEventListener("click",function() {
let oldText = span.innerText;
let newText = oldText.replace(/>>/g,"/");
span.innerText = newText;
});
<span id="catidX"> Test 2 >> Cat >> Cat2 >> Cat4 || //// Cat /// Cat2 // Cat4 // CCat / CCat2 // CCat3 ///</span>
<br />
<button id="start">Replace</button>
,
let str = 'Test 2 >> Cat >> Cat2 >> Cat4 || //// Cat /// Cat2 // Cat4 // CCat / CCat2 // CCat3 ///';
res = str.replace(/(?:>|>){2,}|\/\/+/g,'/');
console.log(res);
-
(?:>|>){2,}
是一个非捕获组,它匹配2个或更多“大于”>
或html实体>
-
\/\/+
匹配两个或更多斜杠
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。