Techioz Blog

ドメインにない相対パスに文字列を含む URL に一致する正規表現

概要

これは私の面接の質問の 1 つです。十分な解決策が思いつかず、拒否されました。

質問は

What is the one regex to match all urls that contain job(case insensitive) in the relative   
path(not domain) in the following list:

    - http://www.glassdoor.com/job/ABC
    - https://glassdoor.com/job/
    - HTTPs://job.com/test
    - Www.glassdoor.com/foo/bar/joBs
    - http://192.168.1.1/ABC/job
    - http://bankers.jobs/ABC/job

私の解決策は、先読みと後読み、/(?<!.)job(?!.)/i を使用することでした。これは上記のリストではうまく機能します。ただし、URL が HTTPs://jobs.com/test の場合は機能しません。

この質問に対する正しい答えは何だろうと考えています。何かご提案がございましたら、よろしくお願いいたします。

解決策

URL を検証する必要がない場合は、「ジョブ」だけに注目してください。

 #  /(?i)(?<=\/)job(?=\/|[^\S\r\n]*$)/

 (?i)
 (?<= / )
 job
 (?= / | [^\S\r\n]* $ )