使用双引号捕获所有内容(可选)正则表达式javascript

时间:2015-12-03 10:09:42

标签: javascript regex

我现在有这个正则表达式:

file:\s?['"](.*?)['"]

对于这个字符串:

file: "word.124-ew/ef/?s=sf"

输出是:

file: word.124-ew/ef/?s=sf

但我还想捕捉一个没有双引号的组(可选)。例如,这个:

file: word.124-ew/ef/?s=sf

没有双引号,但也可以有它们(可选)。

我尝试制作这个正则表达式,但它没有得到所需的结果:

file:\s?['"]?(.*)['"]?

输出是:

word.124-ew/ef/?s=sf

包含最终的双引号,而不是我的预期(不会捕获双引号)。

现在使用我制作的最后一个正则表达式,再次添加双引号时出现问题。输出是:

file: word.124-ew/ef/?s=sf"

经过测试:

http://regexr.com/

RegExp:file:\s?['"]?(.*)['"]?

String1:file: "word.124-ew/ef/?s=sf"

String2:file: word.124-ew/ef/?s=sf

失败:file: word.124-ew/ef/?s=sf"(捕获最后的双引号,我不想捕获双引号)

任何解决方案?如果你们能帮助我,我会很高兴的! 感谢

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

file:\s*['"]?([^'"]+)

请参阅regex demo(请注意,\n仅用于演示目的)

我使用\s*来匹配0个或更多的空格(如果有超过1个,它将全部匹配),添加?量词以使['"]可选,并转向将延迟点匹配子模式转换为与([^'"]+)'以外的一个或多个字符匹配的否定字符类"