我有这个字符串:#test
或#test?params=something
var regExp = /(^.*)?\?/;
var matches = regExp.exec($(this).data('target'));
var target = matches[1];
console.log(target);
我总是只需要获取#test.
如果找不到问号,我粘贴的函数会返回错误。目标是始终返回#test
是否有其他参数。如何制作一个返回此的正则表达式?
答案 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)
答案 3 :(得分:1)
答案 4 :(得分:0)