Javascript 删除位于到特定字符串之间的字母

Javascript 删除位于到特定字符串之间的字母,javascript,uri,fragment-identifier,Javascript,Uri,Fragment Identifier,我想确保从窗口.location获取的URL不包含特定的片段标识符。如果有,我必须把它移走。因此,我必须搜索URL,并找到以mp-开头并一直持续到结束URL或下一个#的字符串(以防URL包含多个片段标识符) 输入和输出示例: www.site.com/#mp-1-->www.site.com/ www.site.com#mp-1-->www.site.com www.site.com/#mp-1#pic-->www.site.com/#pic 我的代码: (这显然不能正常工作) 知道怎么做吗?

我想确保从
窗口.location
获取的URL不包含特定的片段标识符。如果有,我必须把它移走。因此,我必须搜索URL,并找到以
mp-
开头并一直持续到结束URL或下一个
#
的字符串(以防URL包含多个片段标识符)

输入和输出示例:
www.site.com/#mp-1-->www.site.com/
www.site.com#mp-1-->www.site.com
www.site.com/#mp-1#pic-->www.site.com/#pic
我的代码: (这显然不能正常工作)


知道怎么做吗?

使用正则表达式:

var url = window.location;
var imgString = url.replace(/(#mp-[^#\s]+)/, "");
它从URL哈希中删除从
mp-
之前的字符的任何内容


像这样的事?这将使用正则表达式过滤不需要的字符串

var inputs = [
  "www.site.com/#mp-1",
  "www.site.com#mp-1",
  "www.site.com/#mp-1#pic"
];

inputs = inputs.map(function(input) {
  return input.replace(/#mp-1?/, '');
});

console.log(inputs);
输出:

["www.site.com/", "www.site.com", "www.site.com/#pic"]
jsfiddle:


我使用的正则表达式
/#mp-1?/
删除了任何类似
#mp-
#mp-1
的字符串。对于下一个哈希标记之前长度未知的字符串,可以使用
/#mp-[^#]*
删除
#mp-
#mp-1
#mp somelongstring
,可以使用
.replace
将匹配的正则表达式(“mp-”后跟0个或更多非
字符)替换为空字符串。如果可能要删除多个段,只需在正则表达式中添加一个
g
标志

url = url.replace(/#mp-[^#]*/, '');

window.location具有哈希属性,因此。。。window.location.hash

最原始的方法是声明

var char_start, char_end
然后找到两个“#”或一个,第二个将是输入的结尾

有了这个。。。您可以随心所欲,window.location.hash的更改通常会影响浏览器地址


祝你好运

请注意,只有当要删除的字符串正好是
#mp-1
#mp-
时,它才起作用。
var char_start, char_end