我有这个字符串:
http://localhost:8080/Test/index.html?node=station:|slot:/gooberVille/Neverland/Hola#/overview/standard
我想删除'?'的第一个实例之间的所有内容 和“?”之后的第一个“#”实例。
我考虑了 slice() 一段时间,但我认为这不会削减它。太小气了。
谢谢!
我有这个字符串:
http://localhost:8080/Test/index.html?node=station:|slot:/gooberVille/Neverland/Hola#/overview/standard
我想删除'?'的第一个实例之间的所有内容 和“?”之后的第一个“#”实例。
我考虑了 slice() 一段时间,但我认为这不会削减它。太小气了。
谢谢!
使用正则表达式:
var s = 'http://localhost:8080/Test/index.html?node=station:|slot:/gooberVille/Neverland/Hola#/overview/standard';
s = s.replace(/\?.*?#/, '');
?
是正则表达式中的特殊字符,因此要匹配文字?
,请使用反斜杠对其进行转义。 .
匹配任意字符,.*
匹配任意数量的任意字符(尽可能多),.*?
匹配任意数量的任意字符(尽可能少)。所以/\?.*?#/
将从第一个开始匹配?
,然后尽可能少的字符,直到#
找到 a。通过用空字符串替换此正则表达式的匹配项,您可以获得所需的结果。
如果要保留#
字符串中的 ,只需将其更改为s.replace(/\?.*?#/, '#')
.
正则表达式是你最好的选择
string = string.replace(/\?.*?#/, '');