这是我目前所拥有的......
var regex_string = "s(at)?u(?(1)r|n)day"
console.log("Before: "+regex_string)
var regex_string = regex_string.replace(/\(\?\((\d)\)(.+?\|)(.+?)\)/g,'((?!\\$1)$2\\$1$3)')
console.log("After: "+regex_string)
var rex = new RegExp(regex_string)
var arr = "thursday tuesday thuesday tursday saturday sunday surday satunday monday".split(" ")
for(i in arr){
var m
if(m = arr[i].match(rex)){
console.log(m[0])
}
}
我正在交换(?(n)a|b)
where((?!\n)a|\nb)
是n
一个数字,a
andb
是字符串。这似乎工作正常 - 但是,我知道这是一个很大的黑客。
有没有更好的方法来解决这个问题?