我有一个<textarea>
这基本上是一个名称列表,因此我设置了一个函数来替换新行的名称之间的空格。
现在我需要指定名称之间的两个或多个空格实际上是同一元素的一部分。
IE:
John Lucas [[Laurie Vega]] [[Daniel Deer]] Robert
应该转向
John
Lucas
[[Laurie Vega]]
[[Daniel Deer]]
Robert
现在我的正则表达式 $("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));
我有点失落。我尝试匹配然后替换,但这样我将无法恢复原始字符串。所以我必须匹配双括号之外的任何内容并替换空格。
最佳答案
如果您的名字有可能包含非字母字符(“Jim-bo O'Leary”?),您可能更喜欢使用/[^[ ]/来匹配除“[”或空格之外的任何内容。
然后您可以连接匹配的字符串以获得换行效果。
$("textarea").val().toString().match(/([^\[ ]+|\[\[[^\]]*\]\])/g).join("\n");
关于javascript - JS+正则表达式 : Match anything except if it's between [[ ]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036068/