用/替换/的第一个和最后一个匹配项

时间:2017-09-11 06:15:44

标签: javascript regex

代表/add/id/

应该给add/id

我尝试使用replace(),但它只替换了第一次出现。有没有办法在一步中替换/的第一次和最后一次出现?

4 个答案:

答案 0 :(得分:1)

您可以在split()/字符串,然后对数组进行切片,留下第一个和最后一个值,然后加入/

var str = '/add/id/';
const result = str.split('/').slice(1, -1).join('/');
console.log(result);

答案 1 :(得分:-1)

使用匹配除了第一个和最后一个字符之外的所有内容的正则表达式进入捕获组,然后替换只是组:

 str.replace(/^.(.*).$/, "$1")

这个正则表达式意味着:

/    Start of regex delimiter in js
^    Start of input
.    Match one character - first slash in your input
(    Start a capturing group
.*   Match zero or more of any character
)    End the capturing group
.    Match another single character - the last slash in your input
$    End of regular expression input
/    End delimiter for regex string in js

贪婪的量词。*完成所有工作。它会消耗输入中的所有其余字符,在第一个字符之后,然后开始吐出字符,直到满足其余的模式。因为模式要求最后匹配一个char,这意味着捕获组将有效地包含第一个和最后一个字符之间的所有内容

答案 2 :(得分:-1)

要获取第一次出现的索引,请使用:string.indexOf("/"); 对于最后一次使用:string.lastIndexOf("/");

使用string.replaceAt()完成任务(请参阅Git上的实施示例:https://gist.github.com/AdamBrodzinski/4010249):

string.replaceAt(string.indexOf("/"), "");
string.replaceAt(string.lastIndexOf("/"), "");

您可以链接替换操作以生成紧凑代码:

string.replaceAt(string.lastIndexOf("/"), "").replaceAt(string.indexOf("/"), "");

另一种可能的选择是使用slice()功能。

如果" /" char有一个固定的位置(第一个/最后一个与你的例子有关),那么最简单的解决方案是使用substring()函数基本上删除第一个和最后一个字符,如下所示:

string.substring(1, string.length-1);

或者,您可以使用Regex,但此方法将提供更好的性能

希望这可能会有所帮助。

答案 3 :(得分:-1)

替换g^\/的所有出现\/$

const input = '/add/id/';

const re = /^\/|\/$/g;

console.log({
  input,
  output: input.replace(re, '')
});

相关问题