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

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

即使不存在捕獲括號,為什么 split 仍返回空字符串?

即使不存在捕獲括號,為什么 split 仍返回空字符串?

動漫人物 2023-11-02 17:27:13
我的代碼:var str = '<td>a</td><td>b</td>'; console.log(str.split(/<\/?td>/g));即輸出["", "a", "", "b", ""].為什么會出現空字符串?引用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split,如果分隔符是包含捕獲括號的正則表達式,則每次匹配分隔符時,捕獲括號的結果(包括任何未定義的結果)都會拼接到輸出數組中。但是,并非所有瀏覽器都支持此功能。然而,這顯然不相關,因為捕獲括號不存在。
查看完整描述

2 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

讓我們看一個更簡單的例子:

",a,,b,".split(",")
// ["", "a", "", "b", ""]

這和你的案子有什么關系?好吧,如果您有兩個彼此相鄰的分隔符(一個前導分隔符或一個尾隨分隔符),您將在結果中得到一個空字符串,因為這就是它們之間的內容(并且為了維持應該 equal 的行為x.split(a).join(a)x。在您的情況下,兩者</td><td>in the middle 都是匹配的,這意味著有 2 個“分隔符”彼此相鄰,導致中間為空字符串。開頭<td>的 和</td>結尾的 導致前導和尾隨分隔符,從而導致開頭和結尾的空字符串。


查看完整回答
反對 回復 2023-11-02
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

另一個答案給了你原因,我會給你一個快速的解決方案。如果您想從字符串中刪除“<td>”和“</td>”,只需將它們替換為空(刪除它們)即可。然后拆分你的子字符串。

str.replace(/<\/?td>/g, "").split("")


查看完整回答
反對 回復 2023-11-02
  • 2 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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