javascript 正则表达式在条件下应该是什么?[closed]

p8h8hvxi  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(112)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

22小时前关门了。
Improve this question
条件是5位数字必须通过测试,但不能是同一行中的相同数字。例如,12345、223341、44441必须通过测试。但00000、11111等不能通过测试。

wfveoks0

wfveoks01#

下面的表达式应该适用于给定的场景:

const
  areAllDigitsSame = (str) => /^(\d)\1+$/.exec(str) !== null,
  isValid = (str) => !areAllDigitsSame(str);

// Valid
console.log(isValid('12345'));  // true
console.log(isValid('223341')); // true
console.log(isValid('44441'));  // true

// Invalid
console.log(isValid('00000'));  // false
console.log(isValid('11111'));  // false

您可以反转表达式以消除额外的函数,但是您会失去一些意义,并且必须添加一些文档。

/**
 * Checks if a string of digits does not contain all the same digit.
 * @param {string} str - digit string to check
 * @returns {boolean} true, if the string does not have all the same digit. 
 */
const isValid = (str) => /^(\d)\1+$/.exec(str) === null;

// Valid
console.log(isValid('12345'));  // true
console.log(isValid('223341')); // true
console.log(isValid('44441'));  // true

// Invalid
console.log(isValid('00000'));  // false
console.log(isValid('11111'));  // false

相关问题