gpt4 book ai didi

javascript - JavaScript Regex捕获十进制的重复部分

转载 作者:行者123 更新时间:2023-12-03 12:57:04 25 4
gpt4 key购买 nike

寻找最佳方式来取一个可能有重复小数部分的任意数字,并发现重复部分(如果存在)。

最终,我需要用上划线符号(用css text-decoration或MathML mline)修饰数字,因此我还需要知道重复从何处开始的索引。

因此,我需要让我(或可以在算法中使用它)以下结果的正则表达式:

1.333 // result: {"pattern": 3, index: 0}
1.5444 // result: {"pattern": 4, index: 1}
1.123123 // result: {"pattern": 123, index: 0}
1.5432121212 // result: {"pattern": 12, index: 4}
1.321 // result: null
1.44212 // result: null

附加示例(来自评论):
1.3333 // result: { "pattern": 3, index: 0}

最佳答案

function getRepetend(num) {
var m = (num+'').match(/\.(\d*?)(\d+?)\2+$/);
return m && {pattern: +m[2], index: m[1].length};
}

它是这样的:
  • 首先,将数字转换为字符串,以便能够使用正则表达式。
  • 然后,匹配此正则表达式:/\.(\d*?)(\d+)\2+$/:
  • \.与小数点匹配。
  • (\d*?)匹配小数点和重复之间的数字,并将结果捕获到后向引用数1中。
  • (\d+?)与重复项匹配,并将其捕获到后向引用数2中。
  • \2+匹配重复的重复。
  • $匹配字符串的结尾。
  • 最后,如果匹配项为null(即不存在匹配项),则返回null
  • 否则,返回一个对象,该对象包含已转换为数字的重复数(反向引用2)以及点和重复数之间的位数(反向引用1)。
  • 关于javascript - JavaScript Regex捕获十进制的重复部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26363390/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com