gpt4 book ai didi

javascript - 如果前面没有 's',则替换单词末尾的 's'

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:50:12 27 4
gpt4 key购买 nike

.replace(/([^s]?s)$/, '')

我原以为 [^abc] 的意思是“不是这些字符中的任何一个”,但在上面的代码中,只有当单词前面有 s 时,它才会替换单词末尾的 s。我如何将这个正则表达式变成:替换单词末尾的 s,前提是它前面没有 s?

最佳答案

最简单的方法是负向回顾,但 JavaScript 不支持这种方法。因此,我们将只使用反向引用:

.replace(/([^s])s\b/, '$1')

这会匹配单词末尾的两个字符,第一个是除“s”之外的其他字符,第二个是“s”,并用第一个匹配字符(非“s”)替换它们。

顺便说一下,这个正则表达式会忽略一个纯粹由字母“s”组成的单词。我不确定你打算如何处理这个案子。如果您删除了该词的尾随“s”,那么您就删除了整个词。


你原来的正则表达式不起作用的原因是因为你有 ? 字符,这使得非 s 匹配是可选的,而且你实际上没有提供任何替换字符串,这意味着如果非 s 原子匹配,则它将被删除。换句话说,在 "foos" 上运行它会导致 "fo" 而不是 "foo"。在 "foss" 上运行它会生成 "fos"(因为它跳过了非 s 原子)。

关于javascript - 如果前面没有 's',则替换单词末尾的 's',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com