【发布时间】:2019-07-16 16:25:43
【问题描述】:
我有什么:
我做了这个正则表达式/(\["?.+"?(?:,"?.+"?)*\]|(?:"([^"]*)"))(?:\.includes\("?)([^"]*)(?:"?\))/g
我想匹配[123].includes("Oi") == "asdasd" && "asdw".includes("w")
但在捕获组中,我想获取数组 [123] 或字符串,但没有引号 asdasd。
我正在研究如何使用非捕获组并看到了这个(?:<CONTEXT>(<WHAT_YOU_NEED_TO_GET>)<CONTEXT>),所以我像这样制作了我的正则表达式,但是当我使用 OR (|) 时,这不起作用。
在第二场比赛中,我得到的捕获组是:
0: ""asdw".includes("w")"
1: ""asdw""
2: "asdw"
3: "w"
但我想得到的是:
0: ""asdw".includes("w")"
1: "asdw"
2: "w"
检查Here 以更好地查看捕获组
【问题讨论】:
-
您是否尝试使用正则表达式来匹配 javascript 代码?因为
.includes()是一个数组和字符串方法。如果是这样,请解释一下用例吗? -
我有一个带文本的字符串,
.includes()是一个文本,而不是函数。问题只是在正则表达式中获取正确的捕获组,检查here -
我明白这一点。我的问题是为什么你有一个包含该文本的字符串开头。你在写一个 JS 解析器吗?我在问,因为如果您不是在编写解析器或其他操作 JS 代码的工具,那么可能有比正则表达式更好的方法来解决这个问题。
-
如果你试图从任意 JS 代码中提取一些匹配项,你真的应该检查现有的 JS 解析器。
-
我不想要更好的方法来解决这个问题,只想帮助我的正则表达式。我遇到的问题是正则表达式,而不是解析 js。
标签: javascript regex