2 回答

TA貢獻1810條經驗 獲得超4個贊
擺脫正g
則表達式中的修飾符。僅.exec()
當在循環中使用regexp來查找單個字符串中的所有匹配項時,才應使用此方法。它使regexp記住字符串在字符串中匹配結束的位置,以便下一個調用可以在此之后查找匹配項。
但是,如果將regexp與其他字符串一起使用,它將開始從在前一個字符串中找到匹配項的索引中查找該字符串。如果在此字符串中的匹配項之后,它將找不到它。
g
當.match()
用于返回數組中某個正則表達式的所有匹配項時,該修飾符也很有用(但隨后您將無法獲取捕獲組,這就是您的原因),并使用.replace()
來替換所有匹配項。

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)
添加回答
舉報