我正在尝试学习正则表达式,但这对我来说是一个非常复杂的问题:如何检查一个数字的字符是否与另一个数字的字符匹配?我觉得例子会更好地解释这个:
如果数字是12:
12和21是真的
11和22是假的
如果数字是323:
这是一个要测试的示例代码(我能想出的最好的正则表达式):
//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)
}
}
答案 0 :(得分:2)
您可以对数字中的数字进行排序,对输入的数字进行排序 - 并比较排序的列表。
如果输入是原始数字的排列,则排序的数字数组应该相同。
此示例仅打印其第一个参数的排列:
\\
这里使用正则表达式的效率非常低,因为您需要先计算数字的所有排列。你通常不想去那里,因为排列计算的时间复杂度为 O(n!)。