我试图形成一个Javascript正则表达式,以便在字符串中的任何位置找到“+”字符的三个匹配项。他们可以相邻洗牌。
我想出了这个,但它似乎没有做到这一点。
^.*(?:\+{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那样,代码正在检查有关结果的信息),那么您可以使用:
var reg = /^[^+]*\+[^+]*\+[^+]*\+[^+]*$/;
console.log(reg.test('+++'));
console.log(reg.test('a++a+'));
console.log(reg.test('+a+'));
console.log(reg.test('+++a+a'));
&#13;