1

エラーをスローするのではなく、無効な正規表現を変更したいのですが、エラーがスローされる前に無効な正規表現の文字列を取得できません...

var rex = /t(h)?u(?(1)r|e)sday/.replace(/\(\?\((\d)\)(.+?\|)(.+?)\)/g,'((?!\\$1)$2\\$1$3)').replace(/^\/|\/$/g,'')

これは機能しますが、明らかに私が探しているソリューションではありません...

try{
  var rex = /t(h)?u(?(1)r|e)sday/
} catch(e){
  var rex = new RegExp(e.toString().split(/: /)[2].replace(/\(\?\((\d)\)(.+?\|)(.+?)\)/g,'((?!\\$1)$2\\$1$3)').replace(/^\/|\/$/g,''))
}
console.log(rex)

正規表現を文字列ではなく正規表現として定義できるようにしたい。それはできますか?

4

1 に答える 1

1
var rex, str = 't(h)?u(?(1)r|e)sday';
try{
  rex = new RegExp( str );
} catch (e) {
  rex = new RegExp( str.replace( /\(\?\((\d)\)(.+?\|)(.+?)\)/g, '((?!\\$1)$2\\$1$3)'; ).replace( /^\/|\/$/g,'' ) )
}
console.log( rex )
于 2013-02-22T12:11:49.377 に答える