Javascript RegExp相同参数
我正在尝试创建一个RegExp模式。Salt文本是这样的:Javascript RegExp相同参数,javascript,regex,Javascript,Regex,我正在尝试创建一个RegExp模式。Salt文本是这样的: Lorem --ipsum-- dolor !!ipsum!! sit amet Lorem --asdasd-- dolor !!asdasd!! sit amet 我想匹配--ipsum--dolor!!ipsum但不知道会发生什么事。我的意思是文本可能是这样的: Lorem --ipsum-- dolor !!ipsum!! sit amet Lorem --asdasd-- dolor !!asdasd!! sit ame
Lorem --ipsum-- dolor !!ipsum!! sit amet
Lorem --asdasd-- dolor !!asdasd!! sit amet
我想匹配--ipsum--dolor!!ipsum
但不知道会发生什么事。我的意思是文本可能是这样的:
Lorem --ipsum-- dolor !!ipsum!! sit amet
Lorem --asdasd-- dolor !!asdasd!! sit amet
我可以将这两个文本与/-.*.-.*.*?!!匹配/g
。对,我知道
但是当两个参数相同时,我希望它匹配。在示例中,regexp模式不应与以下文本中的任何内容匹配:
Lorem --ipsum-- dolor !!asdasd!! sit amet
Lorem --qweqwe-- dolor !!asdasd!! sit amet
Lorem --qweqwe-- dolor !!ipsum!! sit amet
如何实现这一点?您可以使用反向引用,其中模式匹配先前捕获的子组:
/--(.*?)--.*?!!\1!!/
这里的
\1
表示“匹配第一个捕获组中捕获的内容”。第一个*?
周围的括号使其成为一个捕获组。对于普通教育,如果您有多个捕获组,则可以使用\2、\3等来匹配除第一个组之外的其他组。您可以将此正则表达式与捕获组和反向引用一起使用:
/--([^-]+)--\s+\S+\s+!!\1!!/
如果dolor
是静态字符串,则使用以下正则表达式:
/--([^-]+)--\s+dolor\s+!!\1!!/
正则表达式详细信息:
:匹配两个连字符--
:匹配并捕获任何非连字符的1+([^-]+)
:匹配两个连字符--
:匹配1+个空格字符\s+
:匹配1+个非空白字符\S+
:匹配1+个空格字符\s+
代码>:匹配2个感叹词
:匹配与组#1相同的文本,即返回到捕获组#1的引用\1
代码>:匹配2个感叹词