问题是当用户在输入字段中输入aaaaaa
或xyzzz
等时,我想检查用户是否无法重复输入3个类似的字母。例如aabb有效,但aabbb
应无效。我想用正则表达式来做。有没有办法做到这一点..?
答案 0 :(得分:3)
您可以在负向前瞻(\1
)中使用反向引用((?!…)
),如下所示:
/^(?:(\w)(?!\1\1))+$/
此模式将匹配由“单词”字符(拉丁字母,十进制数字或下划线)组成的任何字符串,但仅限于该字符串不包含相同字符的三个连续副本。
要使用HTML5 pattern
属性,即:
<input type="text" pattern="^(?:(\w)(?!\1\1))+$">
<强> Demonstration 强>
答案 1 :(得分:2)
您还可以使用JavaScript
尝试此模式(\w)\1{2,}
您也可以在 jsfiddle 上进行测试
JavaScript代码如下:
jQuery(document).ready(
function($)
{
$('#input').on(
'keyup',
function()
{
var $regex = /(\w)\1{2,}/;
var $string = $(this).val();
if($regex.test($string))
{
// Do stuff for repeated characters
}
else
{
// Do stuff for not repeated characters
}
}
);
}
);
$('#input')
选择标识为input
的文本字段。对于正则表达式模式中的{2,}
,如果重复的字符,您可以控制长度。如果您在示例中将2
更改为4
,则模式将匹配5个重复字符或更多字符。