使用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 -/

我只是将其传递给替换,以查看字符串的两个部分中的结果。

更新

GT hTML

有了该信息-我编辑了该行,但仍然没有成功

var resA = str.replace(/&gt;{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 &gt;&gt; Cat >> Cat2 &gt;> Cat4 || //// Cat /// Cat2 // Cat4 // CCat / CCat2 // CCat3 ///';
res = str.replace(/(?:>|&gt;){2,}|\/\/+/g,'/');
console.log(res);

  • (?:>|&gt;){2,}是一个非捕获组,它匹配2个或更多“大于” >或html实体&gt;
  • \/\/+匹配两个或更多斜杠