我想修改无效的正则表达式而不是抛出错误,但是在引发错误之前我无法获取无效的正则表达式的字符串...
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 )