允许使用正则表达式和javascript进行复数结尾

allow for plural endings using regex with javascript

本文关键字:结尾 javascript 许使用 正则表达式      更新时间:2023-09-26

对于了解正则表达式的人来说,这应该非常简单。我不需要任何硬核,只需要简单地修改下面的.replace(/[e']?s$/, '');其他人键入了这个代码,在我的特定情况下,它允许单词结尾有复数结尾,所以如果我键入"planet",它也会匹配"plants"answers"planet’s",但如果我键入了"hecktus",它不会匹配"hecktus",我认为这是因为单词以"s"结尾,这就把它扔掉了。有更好的方法允许单词有复数结尾吗,这也将允许单词"hecktus"匹配"hecktus"?

$.trim(inputWords[i]).replace(/[e']?s$/, '');
英语中的复数比这复杂得多。即使不包括非正规军,这种代码也不会真正流行起来。你遇到过一个失败的案例,但还会有更多。一个正则表达式并不是真正可以用来覆盖你正在思考的内容的东西(至少从外观上看不是)。如果你试图检测某个事物是复数还是单数,你就会遇到麻烦。

现在,关于如何处理您的输入。我建议你改为使用词干(除非你出于某种原因需要使用给出的确切版本)。谷歌搜索提示了Porter Stemming Algorithm页面上列出的JavaScript Stemming库

更新

与checktus不匹配的简单正则表达式:/([e']s|[^aiou]s)$/

在英语中:如果前面有撇号或e,则匹配一个s。或者在后面有a、i、o或u以外的s上匹配。

注意,在行星的情况下,这也会抓取之前的角色,所以你不能只在替换中使用它。你可以改为:

text.replace(/[e']s$/,'').replace(/([^aiou])s/, '$1');