防止2个连续数字正则表达式
Posted
技术标签:
【中文标题】防止2个连续数字正则表达式【英文标题】:Prevent 2 Consecutive numbers regular expression 【发布时间】:2021-08-06 10:55:51 【问题描述】:我正在尝试验证 javascript 中的文本输入,以防止出现 2 个连续数字。 例如:
name2aaa 接受
name22aa 不接受
我正在对文本输入进行验证。这就是我的代码,它已经包含了防止@符号,我想将防止 2 个连续数字规则添加到同一个正则表达式中
$('#storename').on('input', function ()
var c = this.selectionStart,
r = /[\\\@@]/g,
v = $(this).val();
if (r.test(v))
$(this).val(v.replace(r, ''));
c--;
this.setSelectionRange(c, c);
);
【问题讨论】:
使用/\d2/
,如果匹配则返回失败
【参考方案1】:
这可能是你需要的:
正则表达式
[\\@]|(\d)\d+
[\\@]
: \
或 @
|
: 或
(\d)\d+
: 前面有1位或多位的数字,把第一位放在第1组中
替换
$1
假设您不希望用户输入另一个数字,如果它之前已经有一个数字。
当用户尝试键入42
时,它会将4
存储在组中,并将所有数字替换为该组。在这种情况下,42
-> 4
。因此用户不能再连续输入超过 1 个数字。
$('#storename').on('input', function ()
var c = this.selectionStart,
r = /[\\@]|(\d)\d+/g,
v = $(this).val();
if (r.test(v))
$(this).val(v.replace(r, '$1'));
c--;
this.setSelectionRange(c, c);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="storename" />
【讨论】:
谢谢。它工作正常。如果我想保留此规则但只有 4 个数字而不是 2,请提出另一个问题,我需要什么更改集? @rawanmansour 那是[\\@]|(\d3)\d+
以上是关于防止2个连续数字正则表达式的主要内容,如果未能解决你的问题,请参考以下文章