[英]Why does this regex replace remove a symbol at the start, but not at the end?
[英]How to remove | Symbol from start and end
我尝试了以下代码删除| 站和末端总线上的符号无效。
"|aabckdoio|".replace("/^\|/g","").replace("/\|$/","")
如果您从正则表达式中删除了双引号,那将起作用。
如果将字符串传递给.replace()
它将执行普通的字符串搜索和替换,而不是正则表达式搜索。
您还可以将两个.replace
操作结合使用:
"|aabckdoio|".replace(/^\||\|$/g, "");
另外,如果您确定可以确定|
字符将始终存在,您完全不需要正则表达式即可:
"|aabckdoio|".slice(1, -1)
如果您只需要删除第一个和最后一个字符,则可以使用:
var str = "|aabckdoio|".slice(1, -1);
str; // "aabckdoio"
这是您不使用正则表达式的可能解决方案。 使用String.indexOf , String.lastIndexOf和String.slice (可以使用带有稍微修改的end
索引的String.substring ),但是仅在匹配给定参数的开始或结束字符时才删除它们。 参数中的错误是安静的( null
或undefined
除外),您可能希望它们嘈杂,如果是,则只需更改检查以适合您的样式/项目即可。
Java脚本
var testString1 = "|aabckdoio|",
testString2 = "*|aabckdoio|*";
function trimChars(string, startCharacters /*, endCharacters */ ) {
string = {}.valueOf.call(string).toString();
startCharacters = {}.valueOf.call(startCharacters).toString();
var start = 0,
end = string.length,
startCharactersLength = startCharacters.length,
endCharacters = startCharacters,
endCharactersLength = startCharactersLength;
if (arguments.length > 2) {
endCharacters = {}.valueOf.call(arguments[2]).toString();
endCharactersLength = endCharacters.length;
}
if (string.indexOf(startCharacters) === 0) {
start = startCharactersLength;
}
if (string.lastIndexOf(endCharacters) === end - endCharactersLength) {
end -= endCharactersLength;
}
return string.slice(start, end);
}
console.log(trimChars(testString1, "|"));
console.log(trimChars(testString2, "*|", "|*"));
输出
aabckdoio
aabckdoio
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.