gpt4 book ai didi

javascript - 用于查找自定义 URL 的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 16:15:47 25 4
gpt4 key购买 nike

我想创建一个正则表达式来匹配以 http://、https://、//开头的 URL,或者查找扩展名不同于 html、htm、php 和 php3 的 URL。 URL查询子字符串是可选的

假设我想找到这些:

http://example.com
/example.mp3
/example.mp3?q=example
http://example.com/example.mp3
#example

并拒绝这些:

example
/example
/example/
/example.htm
/example.htm?q=example
/example.mp3/example //The .mp3 needs to be extension to be accepted
/example#example

我已经尝试过这个 /(^(http:\/\/|https:\/\/|\/\/|#)|(.*)((.*)\.^(? !html|htm|php|php3)$)(\?.*)?$)/igm 但它不起作用。

如果相反的操作(颠倒接受和拒绝的列表)更容易做到,即使非常感谢,我也可以更改处理正则表达式的函数。

最佳答案

看来你可以使用

^(?:#.+|(?:https?:/)?/[^?#\n]*\.(?!(?:html?|php3?)\b)\w+(?:\?.*)?)$

请参阅regex demo

图案详细信息:

  • ^ - 字符串开头
  • (?:#.+ - 后跟任意 1 个以上字符的 #
  • | - 或
  • (?:https?:/)?/[^?#\n]*\.(?!html?|php3?)\w+(?:\?.*)?) -
    • (?:https?:/)?/ - 可选的 http://https:/,然后是 /
    • [^?#]* - 除 ?# 之外的 0+ 个字符
    • \. - 一个点
    • (?!(?:html?|php3?)\b)\w+ - 1 个或多个不等于 htm 的字母/数字/下划线, htmlphpphp3
    • (?:\?.*)?) - 可选的 ? 后跟任何 0+ 个字符
  • $ - 字符串结尾

关于javascript - 用于查找自定义 URL 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41090000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com