我正在学习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
词组的正则表达式。
也许这不是最有效的方法,这就是我遇到这个问题的原因。
答案 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
优先考虑,请将它们置于其他顺序中。