[英]javascript regexp match anything between “{” and “}”,but not between “@{” and “}”
[英]JS+Regexp: Match anything except if it's between [[ ]]
我有一个<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");
感叹号在正则表达式中没有特殊含义。
什么你要找的是 (这意味着|
运营商)的字母序列
[A-Za-z]+
或两个括号,然后是一些非闭合括号,然后是两个闭合括号
\[\[[^\]]+\]\]
所以
$("textarea").val().toString().match(/[A-Za-z]+|\[\[[^\]]+\]\]/g)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.