如何准确匹配新的RegExp

时间:2017-06-06 08:41:54

标签: javascript regex

我有这个字符串:

var str = "https://www.mysite.se/this-match?ba=11"

我需要完全匹配(/?之间),因此只有this-match匹配, this-ma或其他任何内容(更短) )this-match中包含的内容。 即:

var myre = new RegExp('\/this-ma\?');

仍然匹配:

myre.exec(str)[0]
"/this-ma"

如何避免this-match中包含的较短字符串确实匹配?

1 个答案:

答案 0 :(得分:2)

正则表达式的定义是错误的。您认为\?与文字?字符匹配,而不是非贪婪修饰符。不对。事实恰恰相反。

var myre = new RegExp('\/this-ma\?');
> /\/this-ma?/

这里的反斜杠在字符串文字中起作用,并将单?输出到正则表达式,后者变为非贪婪的修饰符。使用正则表达式文字。

var myre = /\/this-ma\?/