如果单词末尾没有“s”,请替换单词末尾的“s”
replace an 's' at the end of the word if there's not an 's' before it
.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 Regex 将单词替换为其第一个字母,除非在括号内
- 如何替换数据属性中的特定字符串单词
- 替换与单词'匹配的文本字符;购物车'替换为img图标
- Javascript/jQuery替换tamil语言输入框中的最后一个单词
- 用特定的javascript正则表达式替换每个单词
- 查找并替换多个单词 JavaScript
- 如何使用正则表达式 JavaScript 替换具有特定单词的整行
- 查找单词的一部分,但替换整个单词
- JavaScript-遍历数组并替换页面上的单词
- 我想使用replace函数扫描json对象,然后用字符串替换匹配的单词
- JavaScript无法用相同单词的数量替换字符串
- Regex,替换所有以@开头的单词
- 替换字符串中的单词和字符
- 使用Javascript/Jquery将单词替换为图像
- innerhtml.replace没有替换数组javascript中的所有单词
- 匹配单词中两个相等的字符,并替换为一个RE
- 用jQuery替换同一结构中的不同单词
- 从所有单词中替换,即使用破折号分隔,第一个字符用大写[更简单的方法]
- 在javascript中找到具有特定字符的单词并替换整个单词
- 如何查找后跟空格的单词并替换为标签