用于增加/减少数字模式的正则表达式

时间:2017-08-21 18:51:33

标签: javascript regex

如何测试字符串中增加或减少的数字模式? 假设字符串只是一个数字。

前:

var regexp = new RegExp(...) // something here
regexp.test("123456789") //true
regexp.test("121231234") //false
regexp.test("987654321") //true
regexp.test("5678901234") //true

测试将是一个真正的数字循环。 怎么可以实现呢?

3 个答案:

答案 0 :(得分:3)

这种正则表达式的混乱是我能够产生的最好的。它找到升序或降序的组。你需要在任何一端抛出一个开始和结束的检查但是,我不知道你想要什么样的。例如,您可能希望在此正则表达式中包含起始行(^)和结束行($)。如果您不熟悉http://www.regular-expressions.info/lookaround.html,它会使用您可能想要查找的前瞻。

(((?=01|12|23|34|45|56|67|78|89|90)\d)+|((?=
09|98|87|76|65|4|43|32|21|10)\d)+)\d

答案 1 :(得分:1)

我不确定你能用正则表达式实现这一点,但绝对可以用reduce来实现。

const test = ["123456789", "121231234", "987654321", "5678901234"];

const results = test
  .map((item) => item.split(''))
  .map((item) => {
    let lastDigit = item[0];
    return item.slice(1).reduce((flag, digit) => {
      const ret = flag && digit > lastDigit;
      lastDigit = digit;
      return ret
    }, true)
  });

console.log(results);

答案 2 :(得分:1)

如果您确实需要使用regexp来执行此操作,那么这是我想到的最简单的解决方案:

/(^0*1*2*3*4*5*6*7*8*9*$)|(^9*8*7*6*5*4*3*2*1*0*$)/

*表示"任意数量的"。