我正在尝试编写一个正则表达式来解析URL的哈希部分,删除可能存在的任何传统格式的哈希部分。
例如,我希望删除以下任何内容:
#
#/
#!
#!/
这就是我目前所拥有的:
/[(?:#|#\/|#!|#!\/)]+/
但是,这是在开始时捕获一个空组,并拆分剩余的字符串。例如,
"#!/E/F".split(/[(?:#|#\/|#!|#!\/)]/); // ["", "", "", "E", "F"]
而理想的结果只是一个单一的
["E/F"]
有人可以指出我的正则表达式中的错误吗?
[如果它有所不同,我使用Firebug中的JavaScript控制台生成了上述输出。]
答案 0 :(得分:3)
使用string.replace
代替string.split
。
#!?\/?
使用上面的正则表达式,然后用空字符串替换匹配。
> '#!/E/F'.replace(/#!?\/?/g, '');
'E/F'
答案 1 :(得分:1)
你的正则表达式看起来非常复杂。也许这更像是你在寻找的东西: “#/ E / F!” .split(/(#/ |#/ |#|#)/!);
您是否结帐了Javascript regex documentation?
它可能与您想象的不同,因为我不明白为什么您使用的是:和?在你的正则表达式。
答案 2 :(得分:0)
如果你使用的是Javascript,那么你可以使用:
location.assign(location.href.replace(/#.*$/, ""));
但是,如果您只想删除上面列出的主题标签,请使用:
var repl = location.href.replace(/#(!\/?|\/)?$/, '');