正则表达式与 Javascript 匹配

理查德

我想提取以下字符串的部分内容:

#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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章