Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 所有`{`的负查找,前面不带`<;em>`_Javascript_Regex - Fatal编程技术网

Javascript 所有`{`的负查找,前面不带`<;em>`

Javascript 所有`{`的负查找,前面不带`<;em>`,javascript,regex,Javascript,Regex,给定一个字符串,例如 敏捷的棕色{{{fox}}跳过了懒惰的{{{dog}} 我正在寻找一种模式,它将匹配前面没有块的{的所有实例 虽然模式/(?)\{{2}/gm可以工作,但这不是Firefox和IE风格的JS的选项 我已经做了相当多的挖掘工作,可以找到大量的示例,这些示例几乎达到了目的,但还不完全达到目的。为字符串{{{{{{u获得正匹配是没有问题的,但我正在寻找的恰恰相反 我觉得使用这种查找方法可能会朝着错误的方向前进。我是否遗漏了更简单的内容?我猜您希望访问那些{{}中的内容,并将其包

给定一个字符串,例如

敏捷的棕色{{{fox}}跳过了懒惰的{{{dog}} 我正在寻找一种模式,它将匹配前面没有
块的
{
的所有实例

虽然模式
/(?)\{{2}/gm
可以工作,但这不是Firefox和IE风格的JS的选项

我已经做了相当多的挖掘工作,可以找到大量的示例,这些示例几乎达到了目的,但还不完全达到目的。为字符串
{{{{{{u
获得正匹配是没有问题的,但我正在寻找的恰恰相反


我觉得使用这种查找方法可能会朝着错误的方向前进。我是否遗漏了更简单的内容?

我猜您希望访问那些
{{}
中的内容,并将其包装在
标记中

您可以使用正则表达式

并替换为
$1$2

  • ([^>])
    确保前面的字符不是

  • {(.**}}
    匹配
    {{}}

您可以使用
[\s\s]*?
正则表达式匹配任何
内容,然后在所有其他上下文中将
{…}
子字符串与
{[\s\s]*?}
模式匹配,捕获其中一个并在回调方法中使用自定义逻辑:

console.log(
“敏捷的棕色{{{狐狸}跳过了懒惰的{{{狗}”
.replace(/[\s\s]*?|({{[\s\s]*?}})/g,函数($0,$1){
返回$1?“+$1+”$0;
})

)
您可以提前查看结束标记:
/{{{[^}]*?}(?!)/g

let test=“快速棕色{{{fox}}跳过懒惰的{{{dog}asdfafds{{{fox}}asdf asdf asdf sdfasdfsfdfdf{{{dog}}”;
控制台日志(“输入:”+测试);

console.log(“output:“+test.replace”(/({[^}]*?})(?!)/g,“$1”);
为什么,它是正确的。匹配、捕获和跳过。当然-但是反向查找捕获我想要的。但是它在IE和Firefox中不起作用。你匹配这些字符串是为了什么?提取还是替换?替换-我想在
上运行替换{{
没有前面有
标记的实例为什么不提前查找结束标记?
/{{{[^}]*?}(?!/g
几乎达到了这一点-唯一的小问题是它将匹配
空间{{here}中的e
@Joseph Marikle的上述例子似乎已经被证明是正确的it@petehotchkiss它会,但也会用
$1