【发布时间】:2014-09-19 06:01:31
【问题描述】:
问题是当用户在输入字段中输入aaaaaa 或xyzzz 等时,我想检查用户是否不能重复输入3 个相似的字母。例如 aabb 是有效的,但 aabbb 应该是无效的。我想使用正则表达式来做到这一点。有没有办法做到这一点..?
【问题讨论】:
标签: javascript regex html
问题是当用户在输入字段中输入aaaaaa 或xyzzz 等时,我想检查用户是否不能重复输入3 个相似的字母。例如 aabb 是有效的,但 aabbb 应该是无效的。我想使用正则表达式来做到这一点。有没有办法做到这一点..?
【问题讨论】:
标签: javascript regex html
您可以在负前瞻 ((?!…)) 中使用反向引用 (\1),如下所示:
/^(?:(\w)(?!\1\1))+$/
此模式将匹配由“单词”字符(拉丁字母、十进制数字或下划线)组成的任何字符串,但前提是该字符串不包含同一字符的三个连续副本。
要使用 HTML5 pattern 属性,应该是:
<input type="text" pattern="^(?:(\w)(?!\1\1))+$">
【讨论】:
你也可以用 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') 选择 ID 为 input 的文本字段。同样使用正则表达式模式中的{2,},您可以控制重复字符的长度。如果您将示例中的2 更改为4,则该模式将匹配5 个或更多重复字符。
【讨论】: