【问题标题】:Matching regex condition匹配正则表达式条件
【发布时间】:2016-06-10 10:23:04
【问题描述】:

我有一个字符串,我想使用正则表达式将该字符串中的##@@##@@ 替换为回车换行符。

我一直在尝试,但运气不佳。我的表达式显示了完整的文本。

表达式: /^.*(##@@##@@).*$/g

字符串:这是我的名字##@@##@@ ##@@##@@ 和身份

代码:str = str.replace(/^.(##@@##@@).$/g, '\r\n');

我怎样才能实现我想要做的事情?

【问题讨论】:

  • 你到底想做什么?

标签: javascript regex


【解决方案1】:

你工作太辛苦了。 :-) 丢掉^.*.*$

var str = "This is my name ##@@##@@ ##@@##@@ and identity";
str = str.replace(/##@@##@@/g, '\r\n');
console.log(str);

str.replace(/##@@##@@/g, '\r\n') 表示“将str 中的字符串##@@##@@ 全局替换为\r\n”。在该示例中,您最终会得到 两个 替换(之间有空格),因为它出现了两次。

如果你想忽略出现之间的空格并将##@@##@@ ##@@##@@之类的东西替换为一个 \r\n,那么我们需要稍微调整一下:

var str = "This is my name ##@@##@@ ##@@##@@ and identity";
str = str.replace(/(?:##@@##@@\s*)+/g, '\r\n');
console.log(str);

.replace(/(?:##@@##@@\s*)+/, '\r\n') 说:“用\r\n 替换出现的一个或多个##@@##@@ 后跟可选空格(\s = 空格,* = 可选)。” (?:...) 将其组合在一起,因此 +(“最后一件事或多件事”)可以应用于整个事情。这是一个非捕获组。

【讨论】:

  • 太棒了。我真的需要更新我的正则表达式技能。有没有你用正则表达式训练自己的空间?如果是这样,我很想知道:)
  • @IK:很高兴有帮助!我并没有真正在任何地方或以任何有组织的方式学习它们。但这里有一些很好的资源:@​​987654321@ 和 regex101.com 此外,您在网上看到的任何关于正则表达式的 Steven Levithan 都可能是可靠的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多