如何检查一个数字是否在数字中(其中的任何位置)出现多次?
输入数字示例:
1, 10, 11, 1010, 1981
Run Code Online (Sandbox Code Playgroud)
输出应该告诉其中哪些有重复的数字:
false, false, true, true, true
Run Code Online (Sandbox Code Playgroud)
我认为最快的方法是 RegExp 测试。您可以使用它来快速判断是否存在重复,并且它足够紧凑,可以在条件运算符中使用。这是一个处理数字和数字字符串的示例。
function hasRepeatingdigits(N) {
return (/([0-9]).*?\1/).test(N)
}
console.log(
[1, 10, 11, 1010, 1981, 12345678901, 123456789].map(hasRepeatingdigits)
)Run Code Online (Sandbox Code Playgroud)
(编辑-艾萨克 B)
以下是 RegExp 工作原理的详细说明:
[0-9]要匹配的 0 到 9 之间的单个字符的列表。([0-9])将此列表定义为第一个捕获组。如果您仅搜索字符并且不需要 RegExp 来执行后续操作,则不需要这些括号。(即 /[0-9]/ 是您在字符串中查找 char 0 到 9 的第一个索引所需的全部内容,或者在 RegExp 测试中为 true).任何单个字符 - 除了行终止符。添加惰性量词*?匹配 0 到无限次,次数越少越好。\1与第一个捕获组最近匹配的文本相同总之:/([0-9]).*?\1/是一个正则表达式,它循环访问字符串,查找从 0 到 9 的每个字符,并在第一次找到与当前第一个捕获组中的字符匹配时返回匹配项。
在字符串 中'123432',此 RexExp 将返回完全匹配:'2343'on capture group 1: '2'。
RegExp.prototype.test() 使用提供的 RegExp 搜索字符串,如果 RegExp 返回匹配则返回 true,否则返回 false。可以轻松修改它以查找重复的字母字符以及使用/([A-Za-z]).*?\1/).test(N).
除了关于RegExp的非常有用的 MDN 部分之外,我强烈建议那些想要更熟悉它们的人们查看这个RegularExpressions101工具。
| 归档时间: |
|
| 查看次数: |
8377 次 |
| 最近记录: |