【发布时间】:2015-03-11 13:14:44
【问题描述】:
这个问题更多是为了满足我的好奇心,而不是真正需要帮助,但我同样会感谢你的帮助,因为它让我发疯。
我正在尝试使用 Javascript 正则表达式否定一个确切的字符串,其想法是排除包含字符串“www”的 URL。例如这个列表:
http://www.example.org/
http://status.example.org/index.php?datacenter=1
https://status.example.org/index.php?datacenter=2
https://www.example.org/Insights
http://www.example.org/Careers/Job_Opportunities
http://www.example.org/Insights/Press-Releases
为此,我可以成功使用以下正则表达式:
/^http(|s):..[^w]/g
这可以正常工作,但是虽然我可以做一个肯定的匹配,但我不能做这样的事情:
/[^www]/g or /[^http]/g
排除包含确切字符串 www 或 http 的行。我曾尝试过像这样臭名昭著的“消极前瞻”:
/*(?: (?!www).*)/g
但这也不起作用,或者我无法在线测试,它在 Notepad++ 中也不起作用。
如果我使用 Perl、Grep、Awk 或 Textwrangler,我会简单地这样做:
!www OR !http
这样就完成了。
所以,我的问题显然是:在 Javascript 中做这种事情的正确方法是什么?这是否取决于正则表达式解析器(我似乎理解?)。
感谢您的任何回答;)
【问题讨论】:
标签: javascript regex string regex-negation exact-match