防止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个连续数字正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

字符串中找出连续最长的数字串(正则表达式)

java 正则表达式 包含字母数字特殊字符

python 正则表达式

Python正则表达式初识附正则表达式总结

正则表达式,限制连续两个横杆(--)

java或者正则表达式如何判断字符串不是相同数字或者字母?不能全是连续数字?(最好是java)