我是正则表达式的新手,我的表达似乎与我想要做的事情相反或相反。我有一个字符串,在这种情况下是一个url,我基本上想用一个空字符串替换所有内容,包括最后一个正斜杠。目前我有
"http://www.sweet.com/member/other".replace(/[^/]+$/, "")
基本上与我想要的相反。获得我正在寻找的结果的正确表达是什么?在这种情况下,最终会得到一个字符串“other”?谢谢你的帮助
答案 0 :(得分:5)
You don't even need RegExp for this。你只需要最后一个/
的位置,并在它之后开始剪切字符串。
var str = "http://www.sweet.com/member/other";
var other = str.substr(str.lastIndexOf('/')+1);
你也可以按/
进行拆分并得到结果数组中的最后一个条目,但大多数时候字符串操作速度更快。
答案 1 :(得分:2)
遵循使用替换
的原始逻辑 "http://www.sweet.com/member/other".replace(/^.*[\/]/, "")
<!DOCTYPE html>
<html>
<body>
<p id="demo">http://www.sweet.com/member/other</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var re=/^.*[\/]/
var str=document.getElementById("demo").innerHTML;
var n=str.replace(re, '');
document.getElementById("demo").innerHTML=n;
}
</script>
</body>
</html>
^(?:.*/)(.*?)$
并从第一组匹配中提取值
答案 2 :(得分:1)
你想要一个与字符串开头匹配的正则表达式,后跟尽可能多的字符,然后是斜杠:
/^.*\//
答案 3 :(得分:0)
如果你想避免jslint中的错误,这里有2个其他解决方案(与/^.*\//
相同)
console.log("http://www.sweet.com/member/other".replace(/^[\S\s]*\//, ""));
console.log("http://www.sweet.com/member/other".replace(new RegExp("\.*\\/"), ""));
上
只是提供另一种不需要正则表达式的方法
console.log("http://www.sweet.com/member/other".split("/").slice(-1)[0]);
on jsfiddle