javascript - 正则表达式与 Javascript 匹配

标签 javascript regex

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

#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

对于所有这些,我希望组 1 始终仅是要提取的字符串。我的正则表达式做错了什么?

最佳答案

.* 意思是“尽你所能,不要停止”。换句话说,在您指定要查找问号之前,您的 ? 会作为第 1 组的一部分进行匹配。相反,您希望匹配除问号之外的所有内容。像这样:

/#([^?]+)\??/;

[^?] 是一个字符类,含义是“匹配除此字符列表之外的任何内容”(在您的情况下是字面问号)。我使用了 + 而不是 *,它表示 1 或更多。您可以使用另一个 ? 而不是 {0,1},这意味着您的文字 ? 可以存在或不存在

关于javascript - 正则表达式与 Javascript 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541311/

相关文章:

php - 将选择框值发布到 php mysql 查询时出现问题

Java - 用于替换美元符号之间文本的正则表达式

regex - Notepad++在字符串/字符的第n次出现时插入新行

Python 正则表达式未按预期返回

javascript - 检查 DOM 元素对象是否具有某种方法的正确方法?

javascript - 使用 Javascript forEach 和 indexOf 在 JSON 中搜索多个过滤器

javascript - 在微服务之间共享代码——在这种情况下是否合理?

javascript - jQuery - 避免在函数执行时监听箭头键

c - 处理正则表达式中的元字符

regex - Groovy 正则表达式 : Capture group in Switch Statement