正则表达式匹配字符串中任何位置的3'+'字符

时间:2016-11-04 11:23:06

标签: javascript regex

我试图形成一个Javascript正则表达式,以便在字符串中的任何位置找到“+”字符的三个匹配项。他们可以相邻洗牌。

我想出了这个,但它似乎没有做到这一点。

^.*(?:\+{3}).*$

任何帮助将不胜感激。提前谢谢。

3 个答案:

答案 0 :(得分:1)

^.*(?:\+{3}).*$正则表达式匹配一个有3个连续+符号的行(没有换行符的字符串)。

要匹配任何只有3个加号的字符串,您可以使用

/^(?:[^+]*\+){3}[^+]*$/

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • (?:[^+]*\+){3} - 正好3个序列:
    • [^+]* - 除+
    • 以外的零个或多个字符
    • \+ - +符号
  • [^+]* - 除+
  • 以外的零个或多个字符
  • $ - 字符串结束。

var ss = [ "+1111+", "++++", "11+111+111+111", "222+222++222+"]; // Test strings
var rx = /^(?:[^+]*\+){3}[^+]*$/;
for (var s = 0; s < ss.length; s++) {                  // Demo
  document.body.innerHTML += "Testing \"<i>" + ss[s] + "</i>\"... ";
  document.body.innerHTML += "Matched: <b>" + rx.test(ss[s]) + "</b><br/>";
}

答案 1 :(得分:0)

为什么不简单地检查+匹配的数量是否为3?

例如

var matches = "asd+asd+asd+asd".match(/\+/g);
var isValid = matches && matches.length == 3;

答案 2 :(得分:0)

如果您的要求是让正则表达式本身检查该字符串是否包含三个+ es(而不是像gurvinder那样,代码正在检查有关结果的信息),那么您可以使用:

&#13;
&#13;
var reg = /^[^+]*\+[^+]*\+[^+]*\+[^+]*$/;

console.log(reg.test('+++'));
console.log(reg.test('a++a+'));
console.log(reg.test('+a+'));
console.log(reg.test('+++a+a'));
&#13;
&#13;
&#13;