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 回答