Javascript JS+;Regexp:匹配任何内容,除非它是';s介于[]之间

Javascript JS+;Regexp:匹配任何内容,除非它是';s介于[]之间,javascript,regex,Javascript,Regex,我有一个基本上是一个名称列表,所以我设置了一个函数来替换新行名称之间的空格 现在我需要指定名称之间的两个或多个空格实际上是同一元素的一部分。 即: 应该转向 John Lucas [[Laurie Vega]] [[Daniel Deer]] Robert 现在我的regexp$(“textarea”).val().toString().replace(\\g,'\n')被打断,因为它将在Vega和Deer之前添加新行 我需要替换任何不在[和]之间的内容。我只是做了相反的事情,试图否定它,但似

我有一个
基本上是一个名称列表,所以我设置了一个函数来替换新行名称之间的空格

现在我需要指定名称之间的两个或多个空格实际上是同一元素的一部分。
即:

应该转向

John
Lucas
[[Laurie Vega]]
[[Daniel Deer]]
Robert
现在我的regexp
$(“textarea”).val().toString().replace(\\g,'\n')
被打断,因为它将在Vega和Deer之前添加新行

我需要替换任何不在
[
]
之间的内容。我只是做了相反的事情,试图否定它,但似乎不起作用:

// Works
$("textarea").val().toString().match(/\[([^\]]*)\]/g));
// Am I using the ! operand wrong?
$("textarea").val().toString().match(/!\[([^\]]*)\]/g));

我有点迷路了。我尝试了匹配,然后替换,但这样我就无法恢复原始字符串。因此,我必须匹配双括号外的任何内容并替换空格。

感叹号在正则表达式中没有特殊意义

您要查找的是字母序列(即
|
运算符)

[A-Za-z]+
或两个括号,后跟一些非结束括号,后跟两个结束括号

\[\[[^\]]+\]\]
所以


感叹号在正则表达式中没有特殊意义

您要查找的是字母序列(即
|
运算符)

[A-Za-z]+
或两个括号,后跟一些非结束括号,后跟两个结束括号

\[\[[^\]]+\]\]
所以


如果您的姓名可能包含非字母字符(“Jim bo O'Leary”),则您可能更喜欢使用/[^[]匹配任何不是“[”或空格的内容

然后,可以加入匹配的字符串以获得新行效果

$("textarea").val().toString().match(/([^\[ ]+|\[\[[^\]]*\]\])/g).join("\n");

如果您的姓名可能包含非字母字符(“Jim bo O'Leary”),则您可能更喜欢使用/[^[]匹配任何不是“[”或空格的内容

然后,可以加入匹配的字符串以获得新行效果

$("textarea").val().toString().match(/([^\[ ]+|\[\[[^\]]*\]\])/g).join("\n");

谢谢你的回答,但我正在尝试替换,而不是匹配。谢谢你的回答,但我正在尝试替换,而不是匹配。太好了!谢谢!(只是一个小错误:匹配关闭两次)太好了!谢谢!(只是一个小错误:匹配关闭两次)