Javascript 空格上的正则表达式匹配-排除多组字符之间的空格
假设我得到了以下条件: 将“hello world”插入{这是一个测试} 我想匹配空白并将每个匹配推送到我的字符串数组,因为我需要知道字符串中文本的索引 棘手的部分来了;必须排除单引号(')和花括号({})内的空格 我期望的结果是:Javascript 空格上的正则表达式匹配-排除多组字符之间的空格,javascript,regex,Javascript,Regex,假设我得到了以下条件: 将“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>