如何使用正则表达式确保只有单斜杠结束URL或任何输入字符串的结尾?
$url = 'http://example.com//';
if(!preg_match('/\/$/', $url))
{
echo 'the url must ends with a \'/\'';
}
这会接受两个或多个不正确的斜杠。
答案 0 :(得分:2)
我认为你可以这样做:
~(?:[^/]|^)/$~
我还没有测试过,我的想法是测试字符串末尾/
之前是否有/
(并且在此版本中允许字符串的开头为好吧,所以"/"
字符串也是有效的。
答案 1 :(得分:1)
你不是要求它只用一个/
来结束;你所说的只是字符串的结尾必须有一个/
。
尝试(扩展格式:)
[^/] # anything BUT a /
\/ # a /
$ # end of string
或采用常规压缩格式:
[^/]\/$
代替。
(顺便说一下:几乎每个网络服务器都不会关心你有一个额外的/...你可能不必这样做,或者如果你做内部应用,可能会遗漏很多角落案件。)
答案 2 :(得分:1)
尝试使用否定的lookbehind:
if(!preg_match('#(?<!\/)\/{0,1}$#',url) {
...
答案 3 :(得分:0)
您可以完全避免使用正则表达式:
$str = 'http://localhost//';
$dslash = '//';
if (substr_compare($str, $dslash, -2, 2) === 0)
echo "Double slash\n"; // gets printed
else
echo "No double slash\n";
答案 4 :(得分:0)
这是 Perl 代码,但 PHP 应该类似&gt;&gt;
#!/usr/bin/perl
$url = 'http://example.com//';
print "Error...\n" if $url =~ m/\/\/+$/;