引号和双引号的条件正则表达式

时间:2018-05-31 13:07:49

标签: javascript regex conditional

我有这个RegEx:

/templateUrl:\s*'([^']+?\.html)'/g

我也试图接受双引号。 到目前为止我学到的是,这是制定条件的方法:

(?(?=regex)then|else)

所以我会得到:

/templateUrl:\s*(?(?=')([^']+?\.html')|(?(?=")([^"]+?\.html")))/g

但这不起作用。我错过了什么?

编辑:

一个巨人OR怎么样?

/templateUrl:\s*('([^']+?\.html)')|("([^"]+?\.html)")/g

2 个答案:

答案 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`

我希望能帮到你:)。