これは私がこれまでに持っているものです...
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)
文字((?!\n)a|\nb)
列です。これは問題なく機能しているようですが、これは大きなファットハックであることを認識しています。n
a
b
この問題に取り組むためのより良い方法はありますか?