只有当JavaScript中的子字符串长度大于x时,才从子字符串中删除字符

only remove characters from substring if substring is longer than x in JavaScript

本文关键字:字符串 字符 删除 JavaScript 大于      更新时间:2023-09-26

我有一串单词,只有当单词超过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个字符的单词的ay,同时能够处理逗号和空格。

/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中(稍后我们将在替换字符串中引用存储在该捕获组的值)
  • ay'b-匹配单词末尾的ay

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

请参阅regex演示