正则表达式:检查数字

时间:2018-06-04 18:00:53

标签: javascript regex

我正在尝试学习正则表达式,但这对我来说是一个非常复杂的问题:如何检查一个数字的字符是否与另一个数字的字符匹配?我觉得例子会更好地解释这个:

如果数字是12:

  • 12和21是真的

  • 11和22是假的

如果数字是323:

  • 332,233是真的
  • 222,223,232,233,322,333是假的

这是一个要测试的示例代码(我能想出的最好的正则表达式):

//Testing 12

for (i = 1; i < 99; i++) {
  if (i.toString().match(/[12][12]/)) {
    console.log(i)
  }
}

console.log('#####')

//Testing 332

for (i = 1; i < 999; i++) {
  if (i.toString().match(/[32][32][32]/)) {
    console.log(i)
  }
}

1 个答案:

答案 0 :(得分:2)

您可以对数字中的数字进行排序,对输入的数字进行排序 - 并比较排序的列表。
如果输入是原始数字的排列,则排序的数字数组应该相同。

此示例仅打印其第一个参数的排列:

\\

这里使用正则表达式的效率非常低,因为您需要先计算数字的所有排列。你通常不想去那里,因为排列计算的时间复杂度为 O(n!)