是否可以编写一个正则表达式来检查给定数字是否出现 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/