Javascript 空格上的正则表达式匹配-排除多组字符之间的空格

Javascript 空格上的正则表达式匹配-排除多组字符之间的空格,javascript,regex,Javascript,Regex,假设我得到了以下条件: 将“hello world”插入{这是一个测试} 我想匹配空白并将每个匹配推送到我的字符串数组,因为我需要知道字符串中文本的索引 棘手的部分来了;必须排除单引号(')和花括号({})内的空格 我期望的结果是: 插入 “你好,世界” 进入 {这是一个测试} 到目前为止,我已经能够排除单引号中的空格,但是我不知道如何将它与花括号结合起来 我现在的正则表达式: \s(?=(?:[^']|'[^']')$) 这个很棘手。这次我考虑的是匹配而不是拆分: '[^']*'\{[^\}]

假设我得到了以下条件:

将“hello world”插入{这是一个测试}

我想匹配空白并将每个匹配推送到我的字符串数组,因为我需要知道字符串中文本的索引

棘手的部分来了;必须排除单引号(')和花括号({})内的空格

我期望的结果是:

  • 插入
  • “你好,世界”
  • 进入
  • {这是一个测试}
  • 到目前为止,我已经能够排除单引号中的空格,但是我不知道如何将它与花括号结合起来

    我现在的正则表达式:

    \s(?=(?:[^']|'[^']')$)


    这个很棘手。这次我考虑的是匹配而不是拆分:

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

    让我们解释一下:

    '[^']*'     # match a quoted string
    |           # or
    \{[^\}]*\}  # match zero or more characters between curly brackets
    |           # or
    \S+         # match a non-white space character one or more times
    

    Niekert,重新提出这个问题,因为它有一个没有提到的简单解决方案。这种情况听起来很相似

    下面是我们的简单正则表达式:

    {[^}]+}|( )
    
    交替的左侧匹配完整的大括号。我们将忽略这些匹配。右侧匹配并捕获组1中的空格,我们知道它们是右侧空格,因为它们没有与左侧的表达式匹配

    此程序显示如何使用正则表达式(请参见的窗格中的结果):

    
    var subject=“在{This is a test}中插入'hello world'”;
    var regex=/{[^}]+}|()/g;
    var match=regex.exec(主题);
    replaced=subject.replace(regex,function(m,group1){
    如果(group1==“”)返回m;
    否则返回“SplitHere”;
    });
    拆分=替换。拆分(“此处拆分”);
    文档。写入(“***拆分***
    ”); 用于(键入拆分)文档。写入(拆分[键],“
    ”;
    参考


    似乎编写一个解析器会比我想要的更好。谢谢!
    <script>
    var subject = "insert 'hello world' into {This is a test}";
    var regex = /{[^}]+}|( )/g;
    var match = regex.exec(subject);
    replaced = subject.replace(regex, function(m, group1) {
        if (group1 == "" ) return m;
        else return "SplitHere";
    });
    splits = replaced.split("SplitHere");
    document.write("*** Splits ***<br>");
    for (key in splits) document.write(splits[key],"<br>");
    </script>