模板字符串中使用正则表达式报错


const regExp = /=([a-zA-Z0-9\$]+?)\(decodeURIComponent/
const fnnameresult = regExp.exec(data)
const fnname = fnnameresult[1]

这段代码可以正常执行,当放入模板字符串中时,

const script = script = document.createElement('script')

    script.innerHTML = `
                   const regExp = /=([a-zA-Z0-9\$]+?)\(decodeURIComponent/
                    const fnnameresult = regExp.exec(data)
                   const fnname = fnnameresult[1]
            `
document.body.appendChild(script)

会报错
Uncaught SyntaxError: Invalid regular expression: /=([a-zA-Z0-9$]+?)(decodeURIComponent/: Unterminated group

模板字符串中不能写复杂js逻辑,比普通字符串厉害的是它能在字符串中写变量。模板字符串跟普通字符串一样,只不过是说在里面可以使用${变量}。使用起来一般是

var a = "123"
console.log(`这是${a}`)    // 输出这是123
 
var a = 123
var b = 456
console.log(`这是${a>b ? a:b}`)  // 输出这是456

三元表达式,一元运算这些也是可以在${}里面写,因为这些最终返回的也是变量,但不能在里面定义变量,写复杂逻辑js

这个为啥不把一个能运行的表达式放在一个方法里面,然后在模版中调用这个方法呢???

看一下这篇文章
http://t.zoukankan.com/lvdabao-p-4253704.html

不知道要你是要显示正在匹配的结果,还是显示正则表达式,如果是显示结果,那不应该放里面,如果是显示表达式,那就用单引号,变成字符串就可以了

包裹你要写的js

模板字符串也不能放js表达式啊

加个转义的问题,没一个回答到点子上的,散了吧散了吧