【问题标题】:remove specific character unless preceded by some specific string删除特定字符,除非前面有一些特定的字符串
【发布时间】:2018-09-29 05:19:50
【问题描述】:

我看了很多,但我找不到我的案子的答案。所以我想remove specific character 除非它前面有一些特定的字符串。例如,如果我有如下段落

var para = '<test@gmail.com>
  >Lorem ipsum dolor sit amet,<test@gmail.com> consectetur
  >adipiscing elit. Integer nec >
  >odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla 
  >quis sem at nibh elementum imperdiet.Duis sagittis ipsum. Praesent 
  >mauris. Fusce nec tellus sed augue semper porta. Mauris massa. 
  >Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu. 
  <test@gmail.com> '

我想删除所有“&gt;” 除了'.com'之后的那些

输出应该是这样的

var para = '<test@gmail.com>
   Lorem ipsum dolor sit amet,<test@gmail.com> consectetur
   adipiscing elit. Integer nec 
   odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla 
   quis sem at nibh elementum imperdiet.Duis sagittis ipsum. Praesent 
   mauris. Fusce nec tellus sed augue semper porta. Mauris massa. 
   Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu. 
  <test@gmail.com> '

我知道我是否这样做

para = para.replace(/\>/g,'');

这将替换所有“&gt;”,但我需要在其中添加该条件。

【问题讨论】:

  • [^m]&gt; 应该做的工作

标签: javascript jquery regex replace str-replace


【解决方案1】:

[^m]&gt;应该做的工作。

查看regex101中的演示

解释: [^m]&gt; 表示应该匹配每个前面没有 m 字符的 &gt;

【讨论】:

  • 边缘情况:如果字符串的第一个字符是&gt;怎么办?
  • 我认为你可以做类似([^m]&gt;|^&gt;) 的事情,我只是回答了他试图完成的事情。
【解决方案2】:

要删除除“.com”之后的所有“>”,请使用negative lookbehind

para = para.replace(/(?<!\.com)>/g,'');

【讨论】:

  • 这个对格式没有任何影响,它保持相同的格式谢谢
  • Javascript 正则表达式不支持负向后看
  • 你可以emulate the negative lookbehind使用这个正则表达式。
  • 不客气,我建议您使用regex101 来测试您的正则表达式,当您试图弄清楚您可以/不能在 Javascript 中做什么时,这是一个有用的资源。
猜你喜欢
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多