JavaScript正则表达式跳过子模式

JavaScript regex to skip sub pattern

本文关键字:子模式 正则表达式 JavaScript      更新时间:2023-09-26

我真的想不通这个。

我有一个字符串,我试图将用大括号(例如{content})标记的三个组与我在双大括号下面的自定义字符串进行匹配,这意味着它是转义的。

SetValue:{1} when {OVERVIEW{{}}.Debug=1} else {0}
// Here is an actual real life example
ValidWhen: {! Matches('^''d{{3}}''s''d{{3}}''s''d{{3}}[''s''S]', COLLECTION.AccountNumber)} {Account Number must not be more than 9 numbers.}

我无法找到一个正则表达式来将第二组匹配为{OVERVIEW{{}}.Debug=1}而不是{OVERVIEW{{。我得到的最接近的正则表达式是使用这个正则表达式,因为我认为我可以使用lookbacking来防止它在双大括号上停止。

/{(?!'}).*?'}/

这可能吗?或者我需要更详细的字符串解析吗?

以下正则表达式适用于有效输入1

/{(?:[^{}]|{{|}})*}/

我们只是不允许在大括号内使用任何{},只允许使用双{{}}

1以下是一些输入,上面的正则表达式可能会返回意外结果

{{0}} text

此正则表达式将与{0}匹配,这很可能是不正确的。

{{ OVER}

无括号的大括号和很可能无效的代码。

{ A {B } C}

嵌套大括号-不确定这是否有效,但上面的正则表达式将获取{B }

regex101上的演示

{[^}{]*}|{'S+}

试试这个。请参阅演示。

http://regex101.com/r/sK8oK9/6