-2

我需要一个字符串的正则表达式是一个图像 url。我需要三种正则表达式

  1. 以斜线开头(例如:/p/230x230/9/Apple_iPad_2_16GB@@9ap4d206.png)
  2. 以双斜杠开头(例如://图像)
  3. 以 http 开头(例如:'http://....')
4

1 回答 1

1

你可以使用这个:

$pattern = '~(?>https?+:/|/)?(?>/[^/\s]++)+~';

解释:

(?>           # open an atomic group *
    https?+   # http or https
    :/        #
   |          # OR
    /
)?            # close the atomic group and make it optional

(?>           # open an atomic group
    /
    [^/\s]++  # all characters except / or spaces one or more times (possessive *)
)+            # close the atomic group, one or more times

(* 有关所有格量词原子组的更多信息。)

注意:

由于该模式描述了一个充满斜线的 url,因此我将~其用作分隔符而不是经典的/. 因此斜线不需要在模式中转义。

您可以向此模式添加锚点,以确保从头到尾完全匹配您的字符串:

$pattern = '~^(?>https?+:/|/)?(?>/[^/\s]++)+$~';
于 2013-07-16T09:55:34.003 回答