我想修改无效的正则表达式而不是抛出错误,但是在引发错误之前我无法获取无效的正则表达式的字符串...

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)


我希望能够将正则表达式定义为正则表达式,而不是字符串。能做到吗

最佳答案

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 )

09-17 03:44