如何使用Javascript正则表达式从可能的单词列表中获取单词的最后一次出现

How to get the last occurrence of a word from a list of possible words using Javascript regex?

本文关键字:单词 获取 最后一次 列表 何使用 正则表达式 Javascript      更新时间:2023-09-26

我需要测试地址是否包含地名列表中的特定地名。例如,如果我有一个看起来像123 someplace, someStreet, dublin的地址,那么下面的正则表达式(dublin|cork|galway)将给我县dublin

问题是,如果dublin出现在地址的其他部分,例如123 someplace, dublin road, cork,那么我仍然会得到dublin,但我实际上想要cork

是否可以编写正则表达式来获取可能匹配单词列表的最后一次出现(如果有的话)。我看到C#正则表达式有一个从右到左的选项,这很好,但我不认为Javascript有这样的选项,是吗?

请注意,我不能依赖地址的格式,因此可能没有逗号分隔字符串。此外,尽管我要查找的单词很可能是字符串中的最后一个单词,但情况可能并不总是如此。

您可以使用前瞻性

(dublin|cork|galway)(?!.*(dublin|cork|galway))

匹配上次出现的

查看正则表达式如何工作

http://regex101.com/r/yQ6bY1/2

(?!.*(dublin|cork|galway))断言在预编码模式之后该模式不能匹配,(dublin|cork|galway)

更准确地说,

'b(dublin|cork|galway)'b(?!.*'b(dublin|cork|galway)'b)

感谢nhahtdh的建议。

找到所需的字符串并检查行尾是否包含该字符串。

(dublin|cork|galway)(?!.*(dublin|cork|galway))

regex演示