我有一些单词,并希望只有在单词超过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个字符,同时能够处理逗号和空格。
答案 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