正则表达式计数下划线

时间:2017-12-18 11:43:29

标签: javascript jquery regex

如何通过underscore计算和查找Regex,如果它高于2下划线且少于4 (连续) 做某事 >如果超过4个下划线做其他事情

$('div').text(function(i, text) {
  var regex2 = /_{2,4}/g;
  var regex4 = /_{4,999}/g;
  //var regexLength = text.match(regex).length;

  if (regex2.test(text)) {
    return text.replace(regex2, '،');
  } else if (regex4.test(text)) {
    return text.replace(regex4, '');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  Blah_Blah _ BlahBlah __ test ____ Blah _________________________________________
</div>

我要做的是,如果超过四个下划线替换comma,请用nothing替换为<div> Blah_Blah _ BlahBlah __ test ____ Blah _________________________________________ </div>

立即

<div>
  Blah_Blah _ BlahBlah , test , Blah
</div>

目标:

regex

问题:

第二个ShowHints (超过四个下划线)未按预期工作。

JSFiddle

2 个答案:

答案 0 :(得分:3)

以下是如何在没有多个正则表达式testreplace调用的单个正则表达式中执行此操作的方法:

var str = 'Blah_Blah _ BlahBlah __ test ____ Blah _________________________________________'
var r = str.replace(/_{2,}/g, function(m) { return (m.length>4 ? '' : ',') })
console.log(r)

//=> Blah_Blah _ BlahBlah , test , Blah 

答案 1 :(得分:0)

const string = "Blah_Blah _ BlahBlah __ test ____ Blah _________________________________________";
const count_underscore_occurrence = (string.match(/_/g) || []).length;