有没有办法在正则表达式中使用not(^)表示多个字符?

时间:2011-03-02 05:39:48

标签: regex string regex-negation

我想制作一个匹配所有相关补丁的正则表达式模式。

我想要匹配的内容:

img src="image.png"
img src="http_image.png"

我不想匹配的内容:

img src="http://example/image.png"

我尝试与这些模式匹配,但它们都不起作用:

\src="[^http://]\
\src="^(http://)\
\src="[^h][^t][^t][^p][^:][^/][^/]\
\src="([^h][^t][^t][^p][^:][^/][^/])\

我留下了<> out img-tag因为我不能把它写成代码。
src属性将始终使用双引号(“)而非单引号(')格式化 它将始终包含“http”源,而不是“https”或其他。

1 个答案:

答案 0 :(得分:9)

解决这个问题的方法是使用负前瞻断言:

^img src="(?!http:\/\/\S+).*"$

Rubular link

^                  : Start anchor
img src="          : Literal img src="
(?!http:\/\/\S+)   : To ensure the string following " is not a URL
.*                 : Anything else is allowed
"                  : Literal "
$                  : End anchor