将正则表达式转换为所有可能的情况
例如:
1.9856 [1-4],则应返回类似98561,98562,98563,98564的值
2.98 [4-5] 65,则应返回值98465,98565
答案 0 :(得分:0)
您可以使用正则表达式/\[(\d)-(\d)\]/
和match
获得范围的start
和end
。然后使用for
循环replace
,将匹配的数字从start
到end
function getCombinations(str) {
const regex = /\[(\d)-(\d)\]/,
[match, start, end] = str.match(regex),
output = []
for (let i = +start; i <= +end; i++)
output.push(str.replace(match, i))
return output
}
console.log(getCombinations('1.9856[1-4]'))
console.log(getCombinations('2.98[4-5]65'))
这仅适用于输入字符串中的单个范围。对于多个范围,您可以使用exec
获取多个匹配项,并根据匹配的replace
使用index
答案 1 :(得分:0)
您可以使用正则表达式来匹配精确数字,也可以使用\d
来匹配任何数字。
对于您的第一个示例,其中9856 [1-4]则应返回值98561,98562,98563,98564,
您可以返回以9856
开头并以1-4
范围内的任何数字结尾的字符串中的所有数字,如下所示:
let nums = "985612, 985622, 985633, 985644, 985655"
let regex = /9856[1-4]/g
let result = nums.match(regex)
console.log(result)
对于第二个示例98 [4-5] 65,则它应返回值98465、98565
let nums = "98465, 98565"
let regex = /98[4-5]{2}65/g
let result = nums.match(regex)
console.log(result)