我想提取以下字符串的部分内容:
#string-to-extract
#string-to-extract?foo1=fooA
#string-to-extract?foo1=fooA&foo2=fooB
我有以下正则表达式:
var pattern = /#(.*)\?{0,1}/;
但是下面这行代码:
string.match(pattern);
为我提供上述字符串的以下结果:
#string-to-extract => [1]string-to-extract
#string-to-extract?foo1=fooA => [1]string-to-extract?foo1=fooA
#string-to-extract?foo1=fooA&foo2=fooB => [1]string-to-extract?foo1=fooA&foo2=fooB
对于他们所有人,我希望始终string-to-extract
只有第1 组。我的正则表达式做错了什么?
.*
意思是“匹配你能做的一切,不要停止”。换句话说?
,在您指定要查找问号之前,您的匹配项是第 1 组的一部分。相反,您希望匹配除问号之外的所有内容。像这样:
/#([^?]+)\??/;
[^?]
是一个字符类,意思是“匹配任何不是这个字符列表的东西”(在你的情况下是一个字面问号)。而不是*
我使用的+
意思是 1 或更多。而不是{0,1}
你可以只使用另一个?
,这意味着你的文字?
可以存在或不存在
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句