我有这个RegEx:
/templateUrl:\s*'([^']+?\.html)'/g
我也试图接受双引号。 到目前为止我学到的是,这是制定条件的方法:
(?(?=regex)then|else)
所以我会得到:
/templateUrl:\s*(?(?=')([^']+?\.html')|(?(?=")([^"]+?\.html")))/g
但这不起作用。我错过了什么?
编辑:
一个巨人OR怎么样?
/templateUrl:\s*('([^']+?\.html)')|("([^"]+?\.html)")/g
答案 0 :(得分:1)
Pointy说的最佳解决方案具有更好的性能
/(templateUrl:\s*)(['"])([^\2]+?\.html\2)/g
[abdd]比| b | c | d
快很多
反向引用的最终解决方案:
(templateUrl:\s*)('|")([^\2]+?\.html\2)
OR
以前的解决方案(也正常工作)测试here
(templateUrl:\s*)('([^']+?\.html)'|"([^"]+?\.html)")
测试here
答案 1 :(得分:-2)
你也有这种可能性很好的工作
(templateUrl:)(?:\s*)(["|'](.*\.html)["|'])
编辑以便接受计数反引号
templateUrl:\s*([<="|'|`].*\.html[="|'|`])
您将捕获templateUrl
没有多余空格的html路径而不引用test.html
以及引用"test.html"
或'test.html'
或`test.html` 的路径p>
我希望能帮到你:)。