Javascript 匹配两个不同标记之间的任何字符串

Javascript 匹配两个不同标记之间的任何字符串,javascript,regex,Javascript,Regex,我试图在两个不同的标记之间匹配字符串的一部分。它们可能是字符串中标记的多次出现 示例文本(标记为斜体,要匹配的文本为粗体): 这是[begin match]示例文本[end match],其中包含一些 [开始匹配]标记和正常的[结束匹配]文本 我有下面的正则表达式,如果令牌是{和},它就可以工作: 我无法使用[开始匹配]和[结束匹配]令牌。Javascript中缺少负面查找似乎是一个巨大的损失 我不知道如何用{和}替换标记[begin match]和[end match]。我怎样才能在这些方面与

我试图在两个不同的标记之间匹配字符串的一部分。它们可能是字符串中标记的多次出现

示例文本(标记为斜体,要匹配的文本为粗体):

这是[begin match]示例文本[end match],其中包含一些 [开始匹配]标记和正常的[结束匹配]文本

我有下面的正则表达式,如果令牌是{和},它就可以工作:

我无法使用[开始匹配][结束匹配]令牌。Javascript中缺少负面查找似乎是一个巨大的损失

我不知道如何用{和}替换标记[begin match]和[end match]。我怎样才能在这些方面与之匹配

\[begin-match\]((?:(?!\[end-match\]).)*)\[end-match\]
你可以试试这个。看演示

你可以试试这个。看演示

/x(.*y?/g
其中
x
是开始标记,
y
是结束标记

这个正则表达式的意思是:匹配任何(
),任何次数(
*
),尽可能少的匹配次数(

你的问题中的一个直接例子是:

/\[begin-match\](.*?)\[end-match\]/g
示例文本现在位于第一个捕获组中。

/x(.*y?)y/g
其中
x
是开始标记,
y
是结束标记

这个正则表达式的意思是:匹配任何(
),任何次数(
*
),尽可能少的匹配次数(

你的问题中的一个直接例子是:

/\[begin-match\](.*?)\[end-match\]/g

示例文本现在位于第一个捕获组中。

就是这样:)谢谢!(我必须等待接受您的答案)您可以使用
(?!…)
结构来执行非贪婪匹配,而不是
(.*?)
:与我的答案几乎相同的
\[开始匹配\](.*?)\[结束匹配\]
@robertklep。是的,它确实太复杂了。请参阅和@Xufox是的,它将:-)但演示如何转义括号也是解决方案的一部分。就是这样:)谢谢!(我必须等待接受您的答案)您可以使用
(?!…)
结构来执行非贪婪匹配,而不是
(.*?)
:与我的答案几乎相同的
\[开始匹配\](.*?)\[结束匹配\]
@robertklep。是的,它确实太复杂了。请参阅和@Xufox是的,它将:-)但演示如何转义括号也是解决方案的一部分。您可能还需要知道您可能还需要知道