在javascript中用正则表达式替换字符串的正确方法?

时间:2013-05-14 14:58:51

标签: javascript regex replace

我是正则表达式的新手,我的表达似乎与我想要做的事情相反或相反。我有一个字符串,在这种情况下是一个url,我基本上想用一个空字符串替换所有内容,包括最后一个正斜杠。目前我有

"http://www.sweet.com/member/other".replace(/[^/]+$/, "")

基本上与我想要的相反。获得我正在寻找的结果的正确表达是什么?在这种情况下,最终会得到一个字符串“other”?谢谢你的帮助

RegExr example

4 个答案:

答案 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>

OR

^(?:.*/)(.*?)$

并从第一组匹配中提取值

enter image description here

enter image description here

答案 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("\.*\\/"), ""));

jsfiddle

只是提供另一种不需要正则表达式的方法

console.log("http://www.sweet.com/member/other".split("/").slice(-1)[0]);

on jsfiddle