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

发布于 2024-10-20 03:53:30 字数 477 浏览 1 评论 0原文

我想制作一个匹配所有相对路径的正则表达式模式。

我想要匹配的内容:

<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][^:][^/][^/])\

src 属性将始终使用双引号 ("),而不是单引号 (')。它将始终包含“http”源,而不是“https”或其他源。

I want to make a Regex pattern that matches all relative paths.

What I want to match:

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

What I don't want to match:

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

I tried matching with these patterns, but none of them work:

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

The src attribute will always be formatted with double-quotes ("), not single-quotes ('). It will always contain an "http" source, not "https" or others.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇女薄笑 2024-10-27 03:53:30

解决此问题的方法是使用否定先行断言:

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

Rubular 链接

^                  : 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

The way to solve this is by using negative lookahead assertion:

^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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文