我有这个字符串:
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
中包含的较短字符串确实匹配?
答案 0 :(得分:2)
正则表达式的定义是错误的。您认为\?
与文字?
字符匹配,而不是非贪婪修饰符。不对。事实恰恰相反。
var myre = new RegExp('\/this-ma\?');
> /\/this-ma?/
这里的反斜杠在字符串文字中起作用,并将单?
输出到正则表达式,后者变为非贪婪的修饰符。使用正则表达式文字。
var myre = /\/this-ma\?/