正则表达式与短语中的相似单词交替

时间:2016-04-25 23:17:40

标签: javascript regex

我正在学习JavaScript并尝试为类似的短语开发正则表达式模式。这是我目前的情况:

var regEx = /(?:[^"']|^)(show me a picture|show me a photo|show me a photograph)(?!["'])/i;

我一直试图了解交替,但这个正则表达式的结果是它只匹配show me a picture& show me a photo但不是show me a photograph。我的理解是正则表达式已经找到show me a photo所以它就在那里停止了。

我无法找到也会考虑show me a photograph词组的正则表达式。

也许这不是最有效的方法,这就是我遇到这个问题的原因。

2 个答案:

答案 0 :(得分:1)

更改您的regEx以捕获整个短语(单词),如下所示:

var regEx = /(?:[^"']|^)(\bshow me a picture\b|\bshow me a photo\b|\bshow me a photograph\b)(?!["'])/ig;

答案 1 :(得分:0)

JavaScript正则表达式规范说:

  

|正则表达式运算符分隔两个选项。该模式首先尝试匹配左侧的Alternative(后跟正则表达式的续集);如果失败,它会尝试匹配正确的Disjunction(后跟正则表达式的续集)。

因此,如果您要求show me a photo|show me a photograph匹配,则左手替代将始终是首选。如果您希望photograph优先考虑,请将它们置于其他顺序中。