这是我面试的一个问题,我没有想出一个足够好的解决方案,被拒绝了。
问题是
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
字符串
我的解决方案是使用lookahead
和lookbehind
,/(?<!\.)job(?!\.)/i
。这在上面的列表中工作正常。但是,如果URL是HTTPs://jobs.com/test
,它将无法工作。
我想知道这个问题的正确答案是什么。提前感谢您的任何建议!
4条答案
按热度按时间pieyvz9o1#
如果您不需要验证URL,只需关注'job'
字符串
omtl5h9j2#
试试这个regex:
字符串
Online RegEx Demo
RegEx详情:
\b
:字边界(?:https?:\/\/)?
:匹配可选http://
或https://
[^\/:]+
:匹配1+个不是/
和:
的字符\/
:匹配/
.*?job
:匹配0个或多个字符,后跟文本job
nnsrf1az3#
这是我想到的一个:
字符串
它匹配你所有的例子,但不匹配job.com或jobs.com的例子(jobs只在路径中)。
我在sublime text中测试了这个,这是很好的b/c,当你输入时,正则表达式的结果会高亮显示。
gwbalxhn4#
我在面试中也被问到这个问题,以下是我的解决方案:/./+job/?./i它在Rubular.com上运行良好