亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

反斜杠.正則表達式.Javascript

反斜杠.正則表達式.Javascript

蕭十郎 2019-06-16 15:12:29
反斜杠.正則表達式.Javascript我想要構建一個JS函數,將一個參數列表連接到一個有效的路徑(因為我無法確定路徑的一部分是用斜杠還是不帶斜線)這是一個功能:concatPath = function() {     var path = "";     for(var i = 0; i < arguments.length; i++)   {         path += arguments[i].replace("(\\|/)$|^(\\|/)", "") + "/";     }     return path;}使用的RegEx匹配所有開始和結束的斜杠和反斜杠。http://regexpal.com但功能不能正常工作(RegEx不匹配)。此外,Chrome狀態SyntaxError:無效的正則表達式:/()$AC.26^()/:unended group當我使用RegEx的時候 (\\)$|^(\\)然而,使用RegEx (\\)$|^(\\)效果很好。是太晚了還是我錯過了什么特別的東西?提前謝謝!利奧
查看完整描述

2 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

您應該使用正則表達式文字(/.../)而不是字符串文本('...'"...")在呼叫.replace..字符串有自己對反斜杠的解釋,在正則表達式構造函數破解反斜杠之前,需要額外的引用級別。

匹配一個反斜杠,正則表達式文字:/\\/

匹配一個反斜杠,一個字符串中的正則表達式:'\\\\'

但是在regex文字中,還必須將反斜杠放在正斜杠前面,因為正斜杠是整件事情的分隔符:

path += arguments[i].replace(/(\\|\/)$|^(\\|\/)/, "") + "/";

或者,如果您由于某種原因而使用字符串,這也應該是有效的:

path += arguments[i].replace("(\\\\|/)$|^(\\\\|/)", "") + "/";

順便提一句,當您的備選方案是單個字符時,(x|y)太過分了;您可以只使用字符類:[xy]..在這種情況下,你會得到這個:

path += arguments[i].replace(/[\\\/]$|^[\\\/]/, "") + "/";path += arguments[i].replace("[\\\\/]$|^[\\\\/]", "") + "/";


查看完整回答
反對 回復 2019-06-16
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

試試這個.。使用[字符類]比較容易。匹配單個\使用您需要的javascript字符串\\\\,這可能就是發生了什么。

new Regexp('^[\\\\/]|[\\\\/]$')

您也可以嘗試/^[\\\/]|[\\\/]$/g符號。

s = 'c:\\folder\\'console.log(s.replace(/^[\\\/]|[\\\/]$/g, ''))


查看完整回答
反對 回復 2019-06-16
  • 2 回答
  • 0 關注
  • 1214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號