^(?!(.)\1{2})(?!012|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210)[0-9]{3,}$
我已经制作了上面的正则表达式,并尝试在字符串上实现以下规则,但这个正则表达式在规则1和规则3上失败。它适用于规则2.需要更正
规则#1不允许使用相同的数字。 规则#2不允许使用连续数字。 规则#3不允许三个或更多相同的数字。
答案 0 :(得分:1)
希望以下模式可以满足您的需求:
^(?!.*(?:(\d).*\1|012|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210))(\d{3,})$
REGEX说明:
^ # assert start of line
(?! # negtive lookahead group starts
.* # match any characters except new line
(?: # non-capturing group starts
(\d).*\1| # RULE#1: Same digits not allowed (e.g. 515, 330); OR
012|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210
# RULE#2: Sequential digits not allowed (e.g. 567, 765)
) # non-capturing group ends
) # negtive lookahead group ends
( # capturing group starts
\d{3,} # match three or more digits (This is not RULE#3 )
) # capturing group ends
$ # assert end of line
对正则表达式进行的修改:
答案 1 :(得分:0)
如果我理解你的话,两个相同的数字不允许在任何地方 - 而不是并排。正如托马斯评论的那样,这也涵盖了规则#3 ......(?)
尝试:
var iframe = document.getElementById('pltc');
iframe.contentWindow.document.open('text/htmlreplace');
iframe.contentWindow.document.write('<input type="checkbox" name="tc0">Yes<input type="checkbox" name="tc0">N0<br/><br/><br/><br/><input type="checkbox" name="tc1">Yes<input type="checkbox" name="tc1">No ');
iframe.contentWindow.document.close();
//Near checkboxes
$('#pltc input[name="tc0"]').click(function() {
$(this).siblings('input:checkbox').prop('checked', false);
});
更改了您的第一个负面预测,以检查整个字符串而不仅仅是第一个字符。
也许这至少指出了你正确的方向:)
问候。
修改强>
如果规则#2也应该应用于整个字符串,则需要对#2进行相同的操作:
^(?!.*?(.).*?\1)(?!012|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210)[0-9]{3,}$