JS 中的正则表达式 - 匹配整个单词,除了末尾的可选 s

Regular Expression in JS - Match whole word except for optional s at the end

我正在尝试编写一个正则表达式,它将匹配一个单词,但不会匹配末尾的 s(如果有的话)(到 'de-pluralize' 这个单词)。我似乎无法让它正常工作。

输入的格式始终是数字,然后是单词,例如: 1 carrot

我想匹配单词但不匹配末尾的 s。所以它会匹配 carrot 1 carrot4 carrots.

我试过向前看,比如 /\w+(?=s)/i 但它不会匹配单数词。如果有意义的话,我不知道如何制作 'optional lookahead' 。 非常感谢任何帮助!

您可以使用这个基于前瞻的正则表达式:

/\b\w+?(?=s?$)/m

RegEx Demo

(?=s?$) 将在输入锚 $>

结束之前声明可选 s 的存在

加号让你的比赛变得贪心,你想要它lazy

\w+?(?=s)