我需要验证网址。我只需要允许主网址站点,例如:
http://example.com
https://example.com
我需要在我的网站上阻止这些网址:
http://example.com/page/blahblahblah
https://example.com/other/bloa
我使用正则表达式:
'url' => ['required', 'url', 'regex:/((http:|https:)\/\/)[^\/]+/']
用户插入网址时,他为什么可以插入http://example.com/page/blahblahblah
?我的正则表达式无法正常工作。验证通过
答案 0 :(得分:0)
您可以使用以下模式来确保URL不包含子目录:
^(?:\S+:\/\/)?[^\/]+\/?$
说明:
^声明字符串开头的位置
非捕获组(?:\ S +://)?
?量词-匹配0到1次,尽可能多地匹配,并根据需要返回(贪婪)
\ S +匹配任何非空白字符(等于[^ \ r \ n \ t \ f \ v])
+量词-匹配一次和无限次,并尽可能多地匹配,并根据需要返回(贪婪)
:匹配字符:字面意义(区分大小写)
/与字符/按字面值匹配(区分大小写)
/与字符/按字面值匹配(区分大小写)
匹配[^ /] +
下面的列表中不存在的单个字符+量词-匹配一次和无限次,并尽可能多地匹配,并根据需要返回(贪婪)
/与字符/按字面值匹配(区分大小写)
/?匹配字符/按字面值(区分大小写)
?量词-匹配0到1次,尽可能多地匹配,并根据需要返回(贪婪)
$声明字符串末尾的位置,或者在字符串末尾的行终止符之前(如果有的话)
答案 1 :(得分:0)
您可以编写自定义验证程序,并结合使用filter_var和parse_url?
以下内容将完成工作...
/order/cart/{cartId}/checkout