删除之间的一切?和#在字符串中

时间:2013-08-13 23:36:59

标签: javascript

我有这个字符串:

http://localhost:8080/Test/index.html?node=station:|slot:/gooberVille/Neverland/Hola#/overview/standard

我想删除'?'的第一个实例之间的所有内容以及'?'的第一个'#'实例。

我考虑过slice()一段时间,但我不认为那会削减它。所以小气。

谢谢!

2 个答案:

答案 0 :(得分:5)

使用正则表达式:

var s = 'http://localhost:8080/Test/index.html?node=station:|slot:/gooberVille/Neverland/Hola#/overview/standard';
s = s.replace(/\?.*?#/, '');

?是正则表达式中的特殊字符,因此要匹配文字?,请使用反斜杠将其转义。 .匹配任何字符,.*匹配任意数字的任意数字(尽可能多),.*?匹配任意数字的任意数字(尽可能少)。因此,/\?.*?#/将从第一个?开始匹配,然后匹配尽可能少的字符,直到找到#。通过将此正则表达式的匹配替换为空字符串,您将获得所需的结果。

如果您想将#保留在字符串中,只需将其更改为s.replace(/\?.*?#/, '#')

答案 1 :(得分:2)

正则表达式是您最好的选择

string = string.replace(/\?.*?#/, '');