首页 > 解决方案 > 编写正则表达式,查找单 l 词到双 l 词

问题描述

我想制作一个将英式英语转换为美式英语的正则表达式。其中一部分是将诸如“分期付款”之类的词转换为“分期付款”。我目前有这个

\b([A-Za-z]*)l(?<!ll)(ful|ment)

它工作得很好,但只是在 Chrome 中;由于负面的向后看,它在 Firefox 上崩溃。不过,我需要向后看,以防止“分期付款”变成“分期付款”。

标签: regexfirefox

解决方案


您可以使用

/\b(?![A-Za-z]*ll(?:ful|ment)\b)([A-Za-z]*)l(ful|ment)\b/

请参阅正则表达式演示

细节

  • \b- 单词边界(单词的开头)
  • (?![A-Za-z]*ll(?:ful|ment)\b)-单词末尾没有 0+ 个字母、、llfulment
  • ([A-Za-z]*)- 第 1 组:0+ ASCII 字母
  • l- 一个l
  • (ful|ment)-fulment
  • \b- 词尾。

推荐阅读