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

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

如果未找到正則表達式匹配 JavaScript,則為空值

如果未找到正則表達式匹配 JavaScript,則為空值

呼如林 2022-06-09 18:57:59
我試圖在開頭提取任何文本字符,以及字符串的以下兩個數字。如果字符串以數字開頭,我想獲得一個空字符串值,因此結果數組仍然包含 3 個值。細繩: 'M2.55X.45'代碼: 'M2.55X.45'.match(/(^[a-zA-Z]+)|((\.)?\d+[\/\d. ]*|\d)/g)預期的: ["M", "2.55", ".45"]實際(正確): ["M", "2.55", ".45"]細繩: '2.55X.45'代碼: '2.55X.45'.match(/(^[a-zA-Z]+)|((\.)?\d+[\/\d. ]*|\d)/g)預期的: ["", "2.55", ".45"]實際的: ["2.55", ".45"]
查看完整描述

3 回答

?
元芳怎么了

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

改為使用/^([a-zA-Z]?)(\d*(?:\.\d+)?)[a-zA-Z](\d*(?:\.\d+)?)$/.exec("2.55X.45")。這將返回一個數組,其中第一個元素是整個匹配項,因此您必須訪問組 1-indexed,例如 match[1] 用于第一個值。你可以在這里試試這個。



查看完整回答
反對 回復 2022-06-09
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

您當前的正則表達式使用備用子句 ( |),它根據匹配的備用子句創建不同類型的分組。


這是一個創建顯式組并使各個組可選的示例(稍微整理一下)。


const regex = /^([a-zA-Z]*)?(\d*(?:\.\d+)?)([a-zA-Z]+)(\d*(?:\.\d+)?)$/


console.log(regex.exec("2.55X.45"))

console.log(regex.exec("M2.55X.45"))


請注意,我已刪除該g標志,因此不會保留正則表達式的狀態。


我還使用exec而不是match不丟棄捕獲組。


查看完整回答
反對 回復 2022-06-09
?
人到中年有點甜

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

你可以試試這個模式

(\D*)(\d+(?:\.\d+))\D+(\.\d+)

http://img1.sycdn.imooc.com//62a1d2600001827518400323.jpg

let finder = (str) => {

  return (str.match(/^(\D*)(\d+(?:\.\d+))\D+(\.\d+)/) || []).slice(1)

}


console.log(finder('M2.55X.45'))

console.log(finder("2.55X.45"))


查看完整回答
反對 回復 2022-06-09
  • 3 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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