第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用 Javascript 匹配多個 URL 模式的 RegEx

使用 Javascript 匹配多個 URL 模式的 RegEx

MMTTMM 2021-12-12 15:26:37
我正在嘗試匹配 Javascript 中的幾種 URL 模式中的任何一種。圖案是:主頁 -/之后沒有任何東西。三個解決方案頁面之一。每個solutions(number)后面都可以跟 a/和任何字符。/solutions/99043 或者 /solutions/99043/blah/solutions/60009 或者 /solutions/60009/blah/solutions/40117 或者 /solutions/40117/blah搜索:/search后跟任何字符,例如?blah.我試過的正則表達式如下:/\/$|\/solutions\/(99043|60009|40117)\/.*|\/search.*/在這個函數(shù)中:(function () {    const urlPath = window.location.pathname;    if (urlPath.match(/\/$|\/solutions\/(99043|60009|40117)\/.*|\/search.*/)) {        console.log("urlPath", urlPath);    }})()它不起作用,因為一切似乎都匹配。任何人都知道我哪里出錯了?基于評論,匹配但不應該的 URL 示例: /solutions/
查看完整描述

3 回答

?
守著一只汪

TA貢獻1872條經(jīng)驗 獲得超4個贊

您可以使用錨點來斷言字符串的開頭^和結(jié)尾$。

匹配/并可選擇匹配帶有后跟 3 個數(shù)字的解決方案的部分,或使用交替匹配搜索部分。

^\/(?:solutions\/(?:99043|60009|40117)(?:\/.*)?|search\b.*)?$
  • ^ 字符串的開始

  • \/ 比賽 /

  • (?: 非捕獲組

    • solutions\/ 比賽 solutions/

    • (?:99043|60009|40117) 匹配 3 個數(shù)字中的 1 個

    • (?:\/.*)?可選匹配/和除換行符以外的任何字符 0+ 次

    • | 或者

    • search\b.* 匹配搜索后跟一個單詞邊界以不匹配例如 searchhere

  • )? 關(guān)閉非捕獲組并使其可選

  • $ 字符串結(jié)束


查看完整回答
反對 回復 2021-12-12
?
慕勒3428872

TA貢獻1848條經(jīng)驗 獲得超6個贊

如果您從 URL 中提取路徑名然后執(zhí)行匹配,我建議您使用^\/$而不是僅匹配“以斜杠結(jié)尾”。

所以那將是 ^\/$|\/solutions\/(99043|60009|40117)\/.*|\/search.*

您可以在 regex101.com 上對其進行測試。我發(fā)現(xiàn)正則表達式對于可視化正則表達式非常有幫助。


查看完整回答
反對 回復 2021-12-12
?
喵喔喔

TA貢獻1735條經(jīng)驗 獲得超5個贊

您可以使用以下正則表達式:


^\/((solutions(\/(99043|60009|40117)(\/.*)?)?)|search(.*)?)$

測試:


var regex = /^\/((solutions(\/(99043|60009|40117)?(\/.*)?)?)|search(.*)?)?$/


console.log(1, regex.test('/')) // true


console.log(2, regex.test('/solutions')) // true

console.log(3, regex.test('/solutions/')) // true


console.log(4, regex.test('/solutions/99043')) // true

console.log(5, regex.test('/solutions/99043/')) // true

console.log(6, regex.test('/solutions/99043/anything')) // true


console.log(7, regex.test('/solutions/60009')) // true

console.log(8, regex.test('/solutions/60009/')) // true

console.log(9, regex.test('/solutions/60009/anything')) // true


console.log(10, regex.test('/solutions/40117')) // true

console.log(11, regex.test('/solutions/40117/')) // true

console.log(12, regex.test('/solutions/40117/anything')) // true


console.log(13, regex.test('/solutions/00000')) // false

console.log(14, regex.test('/solutions/00000/')) // false

console.log(15, regex.test('/solutions/00000/anything')) // false


console.log(16, regex.test('/bug')) // false


console.log(17, regex.test('/search?query=javascript')) // true

console.log(18, regex.test('/search/?query=javascript')) // true


因此,此正則表達式可防止以下錯誤:


防止測試子字符串而不是完整路徑名:

/bug/solutions/99043 // 錯誤的


阻止測試只是解決方案編號的一部分:

/solutions/990430000 // 錯誤的


/solutions/000099043 // 錯誤的


查看完整回答
反對 回復 2021-12-12
  • 3 回答
  • 0 關(guān)注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號