如何测试字符串中增加或减少的数字模式? 假设字符串只是一个数字。
前:
var regexp = new RegExp(...) // something here
regexp.test("123456789") //true
regexp.test("121231234") //false
regexp.test("987654321") //true
regexp.test("5678901234") //true
测试将是一个真正的数字循环。 怎么可以实现呢?
答案 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*$)/
*
表示"任意数量的"。