回答
這是一個可能的解決方案,無需使用正則表達式。使用String.indexOf,String.lastIndexOf和String.slice(可能已使用String.substring並略微修改end
索引),但它只會刪除開始或結束字符,如果它們與給定參數匹配。參數錯誤是安靜的(除了null
或undefined
),你可能希望它們很嘈雜,如果是這樣,那麼只要改變檢查以適應你的風格/項目。
的Javascript
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
感謝它運作相當不錯。 –
它將工作,如果您刪除從正則表達式的雙引號。
如果您將字符串傳遞給.replace()
它會執行正常字符串搜索和替換,而不是正則表達式搜索。
您也可以將二者結合起來.replace
操作:
"|aabckdoio|".replace(/^\||\|$/g, "");
另外,如果你肯定知道的|
人物永遠在那裏,你可以不用正則表達式的所有:
"|aabckdoio|".slice(1, -1)
這只是刪除開始|符號 –
@AbdulBasit幾秒鐘後有一個沒有'g'修飾符的版本 - 此處的版本(在Chrome上) – Alnitak
如果你只需要刪除第一和最後一個字符,你可以使用:
var str = "|aabckdoio|".slice(1, -1);
str; // "aabckdoio"
ha,重疊編輯 - 我正在同時添加'.slice()'方法增加了這個答案 – Alnitak
- 1. 如何在開始和結束時從JSON中刪除括號?
- 2. 從javascript中的變量中刪除開始和結束逗號
- 3. 如何刪除R中的字符串的開始和結束?
- 4. 從字符串中刪除單引號,但不是從開始和結束
- 5. 刪除行結束和開始蒙天:
- 6. 刪除開始/結束從jQuery的陣列雙引號
- 7. Excel VBA:如何從單元格中刪除子字符串(具有相同的開始和結束符號)?
- 8. 如何刪除從一開始雙引號和字符串的結尾
- 9. Javascript從字符串的開始和結束中刪除特殊字符
- 10. 從開始和結束刪除引號 - 用於空白的字段
- 11. 刪除符號「/」開始和串
- 12. 使用開始和結束值刪除字符串
- 13. 正則表達式來刪除開始和結束字符串
- 14. 正則表達式從字符串中刪除開始和結束字符?
- 15. 如何刪除以某個單詞開始和結束的子字符串?
- 16. 開始結束編號
- 17. 從輸入使用開始和結束位置刪除字符javascript
- 18. 如何從c開始和結束使用拆分功能刪除[#
- 19. 如何刪除TeeChart的開始,結束部分
- 20. 如何從字符串的開始和結尾刪除特定字符?
- 21. 使用已知的開始和結束字符串c刪除字符串#
- 22. 如何從列表中刪除從開始到結束的範圍
- 23. 如何從字符串的開始和結尾刪除所有符號(如果有的話)?
- 24. 如何刪除列開始,並在文件中有括號結束
- 25. 刪除開始點和結束點以外的所有標記
- 26. 刪除XML元素的開始和結束空格
- 27. 如何從字符串的開頭和結尾刪除符號,但某些符號除外?
- 28. 如何查找我的未結束括號從GCC開始?
- 29. 如何刪除在MySQL中的varchar字段的開始和結束標籤?
- 30. 如何刪除指定的開始和結束行中的文本在java中
你有一個正則表達式傳遞給'.replace',而不是字符串(至少在這種情況下)。即'/^\ |/g'而不是'「/^\ |/g」'。查看[MDN文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)。 –
我認爲之間//認爲是正則表達式的任何東西 –
如果它在源頭「本身」,是的。但是你的'/.../'在一個字符串裏。考慮'var foo =「var bar」;'。它確實聲明瞭一個變量'foo'而不是一個變量'bar',因爲''var bar「'是一個字符串。該字符串不被評估爲JavaScript。 –