[英]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.