javascript - 使用正则表达式测试数字是否出现 'x' 次

标签 javascript regex

是否可以编写一个正则表达式来检查给定数字是否出现 x 次?

我正在尝试使用以下代码来确定在给定的字符串(16 位数字)中是否至少有一个以上的明显数字。例如,如果 16 次只有一个数字,则不能有两个不同的数字。

let multipleDigits = /[0-9]{16}/g.test(ccString);
    console.log('More than one digit? ' + result);

整个函数是:

function validator(ccNumber) {
    let ccString = ccNumber.toString();

调用和输出是:

validator(1111111111111112);
More than one digit? false

预期输出为“真”。我将不胜感激任何帮助/指导。

谢谢

附注我正在尝试的正则表达式的另一种变体是:

let testOnlyOneDigit = /\d{16}/g;

最佳答案

通过在开头捕获 \d 并反向引用该捕获组直到到达字符串末尾来测试字符串是否仅包含一个单个 数字。然后否定该测试以查看字符串是否包含任何其他数字:

const hasMoreThanOneDigit = num => !/^(\d)\1*$/.test(num.toString());
console.log(hasMoreThanOneDigit(1111111111111112));
console.log(hasMoreThanOneDigit(1111111111111));

如果您不能指望输入是一个数字,并且您还需要对其进行验证(“包含至少两个不同数字的数字字符串”),那么测试将不得不稍微复杂一些: 匹配并捕获一个数字,然后匹配更多的数字,并通过在它前面放置否定前瞻来最终匹配一个与捕获的数字不同的数字:

const hasMoreThanOneDigit = num => /^(\d)\d*(?!\1)\d+$/.test(num.toString());
console.log(hasMoreThanOneDigit(1111111111111112));
console.log(hasMoreThanOneDigit(1111111111111));
console.log(hasMoreThanOneDigit('111111AAA1111111'));

关于javascript - 使用正则表达式测试数字是否出现 'x' 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58388135/

相关文章:

javascript - 信用卡正则表达式在 AngularJs 中不起作用

javascript - 正则表达式第一部分以数字开头

javascript - 向动态创建的复选框添加验证 jQuery

javascript - 在长页面上跳转到页面顶部链接

python - 用于解析列表项的正则表达式

regex - 惰性可选量词应该如何表现?

regex - 如何检测python字符串中的最后一位数字

Python 加快从极大字符串中检索数据的速度

javascript - 如何用数字链接替换数字

javascript - 对 JSON 数组进行过滤和排序