如果substring在JavaScript中长于x,则只从子字符串中删除字符

时间:2015-12-08 15:29:36

标签: javascript regex string replace

我有一些单词,并希望只有在单词超过4个字符时才从单词的末尾删除“ay”。

例如:

"I work every day except monday, tuesday, wednesday and thursday"

应该返回:

"I work every day except mond, tuesd, wednesd and thursd"

我确信这可以使用string.replace()方法解决,我只需要找出可以添加到(/ ay $ / gi,“”)的内容,使其仅替换为单词具有超过4个字符,同时能够处理逗号和空格。

1 个答案:

答案 0 :(得分:3)

/ay$/gi正则表达式只会在任何单词的末尾匹配ay

您可以使用以下代码:

var re = /\b(\w{3,})ay\b/gi;  // It will match `ay` at the end of a 5+ letter word
var str = 'I work every day except monday, tuesday, wednesday and thursday';
var result = str.replace(re, '$1');
document.getElementById("r").innerHTML = result;
<div id="r"/>

正则表达式为\b(\w{3,})ay\b。匹配

  • \b - 字边界
  • (\w{3,}) - 3个或更多字母数字符号,将它们存储在第1组中(我们将在替换字符串中稍后反映存储在此capture group中的值)
  • ay\b - 在单词末尾匹配ay

替换字符串中的$1 backreference获取存储在Capture group 1缓冲区中的值(即(\w{3,})捕获的值,3或更多字母数字符号)。

请参阅regex demo