Javascript正则表达式用于在问号之前获取字符串(如果存在)

时间:2014-12-19 11:25:48

标签: javascript regex

我有这个字符串:#test#test?params=something

var regExp = /(^.*)?\?/; 
var matches = regExp.exec($(this).data('target'));
var target = matches[1];
console.log(target);

我总是只需要获取#test.如果找不到问号,我粘贴的函数会返回错误。目标是始终返回#test是否有其他参数。如何制作一个返回此的正则表达式?

5 个答案:

答案 0 :(得分:4)

该字符串是否直接来自当前页面的网址?

如果是这样,您只需使用:

window.location.hash.split('?')[0]

如果您正在访问http://example.com/#test?params=something,则上述代码将返回" #test"。

测试

example.com/#test                     -> "#test"
example.com/#test?params=something    -> "#test"
example.com/foo#test                  -> "#test"
example.com                           -> ""

答案 1 :(得分:3)

简单的替代方案:

hash = str.substr(0, (str + "?").indexOf("?"));

答案 2 :(得分:2)

^(.*?)(?=\?|$)

你可以尝试一下。参见演示。

https://regex101.com/r/vN3sH3/25

答案 3 :(得分:1)

您可以使用:

var regExp = /^([^?]+)/;

无论输入中是否存在?,这将始终在第一个?之前返回字符串。

RegEx Demo

答案 4 :(得分:0)

要么我缺少某些东西,要么只是:

 ^#\w+

似乎为(thisthis)方案做了工作