我使用online regex tester来测试我的正则表达式。
我尝试制作一个与网址匹配的正则表达式(意味着它必须以http://
开头。不要担心http://s
,因为我有一个数组,单独检查每个。http://
不会被硬编码到表达式中。它将是一个变量字符串。
所以这是我到目前为止的正则表达式:
/http:\/\/.+(?!\s+)/g
它应该匹配http://
,然后匹配任何字符,直到它碰到空格。
例如(灰色应该匹配):
http://example.com/foo
是我最喜欢的网站,http://192.168.0.1
是我的网关IP。
但是,整个字符串与该正则表达式匹配。
负面的前瞻(?!\s+)
,是我认为我应该关注的。我期待它匹配,直到遇到空白。如果我使用这个否定前瞻:(?!$)
,它将匹配除行尾的最后一个字符之外的所有内容,如预期的那样。
为什么(?!$)
按预期工作,但不是(?!\s+)
?
答案 0 :(得分:5)
答案 1 :(得分:1)