考虑我需要匹配的网址,其中可能包含或不包含查询参数enforceLogin
。
为了确定在URL中是否存在enforceLogin,我写了这样的正则表达式:
/(enforceLogin=(\d+))?/.exec('something?enforceLogin=1')
我希望它可以匹配,但它会返回
["", undefined, undefined]
但是,在我将$
添加到regexp的末尾或删除regexp末尾的?
后,它正确匹配。
问题出现了,为什么第一个正则表达式无效?该字符串实际上包含enforceLogin=1
。
如果regexp尾部的问号使得内容更加懒散,为什么要将$
添加到最后使其再次起作用?