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

标签 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/

正则表达式:file:\s?['"]?(.*)['"]?

字符串 1:文件:“word.124-ew/ef/?s=sf”

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

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

有什么解决办法吗?如果你们能帮助我,我会很高兴! 谢谢

最佳答案

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

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

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

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

关于javascript - 用双引号捕获所有内容(可选)正则表达式 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063082/

相关文章:

javascript - 从数组填充 Bootstrap 4 表?

python - Perl:有效地计算许多字符串中的许多单词

regex - 类似 grep 的 postgres 查询

java - 使用 Java 将 GeoJSON 坐标中的纬度和经度值分别提取为所需的格式

javascript - 使用正则表达式验证文件

regex - 如何匹配直到命中某个字符?

javascript - 需要帮助使用 jquery 搜索 XML 文件并将结果存储在变量中供以后使用

javascript - 获取引用页面Servlet的URL

javascript - 如何从 xml 文件中读取所有带有标签名称及其值的子元素?

javascript - 如何使用 where 子句从 firestore 中删除文档