我是正则表达式的新手。面对一些问题,同时将一个表达式作为可选项,如果它存在则不应重复。在下面的例子中,我希望%23
是可选的,如果它发生,那么它不应该重复。但在下面的情况下,它适用于可选项,但不适用于重复案例。
即使我把字符串作为:
,它也会给我true
-113%23%2313113098A%2F--
有人可以建议如何使其成为可选而非重复。这是我的正则表达式:
(%23)?([0-9]|[A-Z]|%2F|-).*$
答案 0 :(得分:2)
您可以使用否定前瞻来避免匹配public function handle($request, Closure $next, $guard = null)
{
if(Auth::guard($guard)->guest()) {
return redirect()->guest('auth/login');
}
return $next($request);
}
的重复实例:
%23
<强>解体:强>
^(?:[0-9]|[A-Z]|%2F|[-%])(?!(?:.*?%23){2}).*$
但是,如果要求避免连续重复,请使用:
(?! # start negative lookahead
(?:.*?%23){2} # match 0 or more chars followed by %23, {2} matches 2 repeats
) # end lookahead