替换字符串末尾的字符,直到达到某个字符正则表达式

时间:2014-11-24 01:05:55

标签: javascript regex string

假设我的字符串是这样的,最后可能有空格。

var s = "<a href="/FOO/tags/EDM">EDM</a>/ <a href="/FOO/tags/EDM">EDM</a>/ / / /  "

我想在最后一个关闭锚标记之后替换/的每个实例。以下是我尝试过的内容:

s.replace(/[</a>](.*)$/, '');

但是没有得到结果,我能否详细解释为什么/我做错了什么?

三江源!

2 个答案:

答案 0 :(得分:1)

使用此模式

(^.*<\/a>)|.*$

并替换为$1

Demo

(               # Capturing Group (1)
  ^             # Start of string/line
  .             # Any character except line break
  *             # (zero or more)(greedy)
  <             # "<"
  \/            # "/"
  a>            # "a>"
)               # End of Capturing Group (1)
|               # OR
.               # Any character except line break
*               # (zero or more)(greedy)
$               # End of string/line

答案 1 :(得分:1)

<\/a>(\/\s*)+$替换为</a>

var s = '<a href="/FOO/tags/EDM">EDM</a>/ <a href="/FOO/tags/EDM">EDM</a>/ / / /  ';

window.alert( 
  "Before:\n" + s + "\n\n\n"
  + "After:\n" + s.replace(/<\/a>(\/\s*)+$/, '</a>')
);

说明

  • <\/a>匹配</a>
  • (\/\s*)匹配\,后跟可选的空格
  • +与之前的次数匹配
  • $确保在最后\(plus optional white space)
  • 之后找不到任何内容

另一个演示

<强>演示http://regex101.com/r/yA0aS0/1