代码之家  ›  专栏  ›  技术社区  ›  Athapali

url匹配regex模式

  •  -1
  • Athapali  · 技术社区  · 6 年前

    我有一堆URL需要过滤掉,这取决于它是否包含关键字 'staff'

    1. /services
    2. /services/EarNoseThroat
    3. /services/EarNoseThroat/Audiology
    4. /services/EarNoseThroat/Audiology/CochlearImplant
    5. /services/BehavioralHealth/Clinic  
    
    6. /services/BehavioralHealth/Clinic/staff
    7. /services/BehavioralHealth/Clinic/staff/Jamie-Hudgins
    

    我想创建一个regex模式来匹配所有具有 /services 在主机URL之后,但不是 “员工” URL中的任何位置。基本上匹配URL 1到5。

    我还需要一个模式,而不仅仅是匹配URL 6和7。

    看来消极的展望会起作用,除非我不知道如何把它组合起来。有人能帮我吗?

    类似:

    ^\/services\/(?:[^\/]+\/?)*$
    
    
    OR
    
    ^/services\/...any Depth here...\/(?!staff)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Gurmanjot Singh    6 年前

    regex匹配以下内容:

    /services
    /services/EarNoseThroat
    /services/EarNoseThroat/Audiology
    /services/EarNoseThroat/Audiology/CochlearImplant
    /services/BehavioralHealth/Clinic  
    

    Regex:

    ^\/services\/(?!.*\bstaff\b).*$
    

    Click for Demo

    说明:

    • ^ -断言字符串的开头
    • \/services\/ 火柴 /services/
    • (?!.*\bstaff\b) -负面展望,以确保 staff 不出现在字符串中的任何位置
    • .* -匹配除换行符之外的0+个字符
    • $ -断言字符串结尾

    regex匹配以下内容:

    /services/BehavioralHealth/Clinic/staff
    /services/BehavioralHealth/Clinic/staff/Jamie-Hudgins
    

    Regex:

    ^\/services\/(?=.*\bstaff\b).*$
    

    Click for Demo

    说明:

    唯一的区别是正面的展望:

    • (?=.*\bstaff\b) -积极向前看以确保 工作人员 出现在字符串末尾之前的某个位置