JavaScript中的正则表达式如何在两个“特殊”字符之间查找内容?

时间:2018-12-06 21:54:04

标签: javascript regex

我有以下文本行,我需要在$$中查找内容,并提取id=description=的值。

您能指出我正确的方向吗,我尝试了几次都没有成功(实际上我尝试过这个^\$\$(.*?)\$\$

$$id=uniq_id&description=some_description$$ Any text after
// result should be: ['uniq_id', 'some_description', 'Any text after']

$$id=uniq_id$$ Any text after
// result should be: ['uniq_id', '', 'Any text after']

Any text after
// result should be: ['','','Any text after']

2 个答案:

答案 0 :(得分:2)

诸如

的模式
\$\$(?:id=(\w+))?(?:&description=(\w+))?

应该为此工作。

答案 1 :(得分:0)

您使用1个捕获组(.*?)$$$$之间进行捕获。

如果id应该存在并且描述是可选的,则可以使用3个捕获组,其中与描述匹配的部分是可选的:

^\$\$id=(\w+)(?:&description=(\w+))?\$\$(.*)

Regex demo

const regex = /^\$\$id=(\w+)(?:&description=(\w+))?\$\$(.*)/;
const strings = [
  "$$id=uniq_id&description=some_description$$ Any text after",
  "$$id=uniq_id$$ Any text after"
];

strings.forEach((s) => {
  console.log(s.match(regex));
});