2 回答
TA贡献1810条经验 获得超4个赞
摆脱正g
则表达式中的修饰符。仅.exec()
当在循环中使用regexp来查找单个字符串中的所有匹配项时,才应使用此方法。它使regexp记住字符串在字符串中匹配结束的位置,以便下一个调用可以在此之后查找匹配项。
但是,如果将regexp与其他字符串一起使用,它将开始从在前一个字符串中找到匹配项的索引中查找该字符串。如果在此字符串中的匹配项之后,它将找不到它。
g
当.match()
用于返回数组中某个正则表达式的所有匹配项时,该修饰符也很有用(但随后您将无法获取捕获组,这就是您的原因),并使用.replace()
来替换所有匹配项。
TA贡献1829条经验 获得超7个赞
await您内部的第二个ecommerceRegEx.exec没有意义。您已经习惯await了获取该变量。
另外,您的正则表达式也不是有效的JavaScript正则表达式,因为JS不支持命名捕获组。看起来当您在regex101.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)
添加回答
举报