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

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

當其他人撤回其值時,regex.exec返回“ null”

當其他人撤回其值時,regex.exec返回“ null”

Helenr 2021-05-02 16:41:42
我正在嘗試為正則表達式創建匹配項,但它一直說它為“ null”。我以完全相同的方式聲明了一個不同的變量,它可以將值拉回原來的值。我已經確保ecommerceRegEx安慰了它的價值。我已確保ecommercePortalAppointmentTime安慰了它的價值。我在.exec中添加了一個等待,該等待用于其他變量聲明。我確保所有內容的拼寫正確,并且所有變量均被正確引用。//RegEx I am usingvar ecommerceRegEx = /((?<time>\d+:\d+) (?<modifier>[AP])M (?<timezone>[A-Z]+))/gm//Object I am getting the DOM property forvar ecommercePortalAppointmentTime = await Selector('[class="availability-option"]').find('span').nth(0).innerText//Match I am attempting to createvar ecommercePortalMatch = ecommerceRegEx.exec(await ecommercePortalAppointmentTime)//Console.log I am verifying the value is returned correctlyconsole.log("Ecomm Match: " + ecommercePortalMatch)//Returns 'null'預期結果:應該使用每個組的值創建一個數組。例如,如果字符串是:“您的約會是CDT的9:00 AM”,則數組應為[9:00,AM,CDT]實際結果:返回“ null”
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

擺脫正g則表達式中的修飾符。僅.exec()當在循環中使用regexp來查找單個字符串中的所有匹配項時,才應使用此方法。它使regexp記住字符串在字符串中匹配結束的位置,以便下一個調用可以在此之后查找匹配項。

但是,如果將regexp與其他字符串一起使用,它將開始從在前一個字符串中找到匹配項的索引中查找該字符串。如果在此字符串中的匹配項之后,它將找不到它。

g.match()用于返回數組中某個正則表達式的所有匹配項時,該修飾符也很有用(但隨后您將無法獲取捕獲組,這就是您的原因),并使用.replace()來替換所有匹配項。


查看完整回答
反對 回復 2021-05-20
?
千巷貓影

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

await您內部的第二個ecommerceRegEx.exec沒有意義。您已經習慣await了獲取該變量。


另外,您的正則表達式也不是有效的JavaScript正則表達式,因為JS不支持命名捕獲組??雌饋懋斈趓egex101.com上調試時,您使用了PHP選項。您可以在左側菜單上進行更改。


試試這個:


//RegEx I am using

var ecommerceRegEx = /((\d+:\d+) ([AP])M ([A-Z]+))/gm


//Object I am getting the DOM property for

var ecommercePortalAppointmentTime = await Selector('[class="availability-option"]').find('span').nth(0).innerText


//Match I am attempting to create

var ecommercePortalMatch = ecommerceRegEx.exec(ecommercePortalAppointmentTime)


查看完整回答
反對 回復 2021-05-20
  • 2 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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