首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Regex (JS):匹配没有协议的URLs,忽略有协议的URLS

Regex (JS) 是 JavaScript 中的正则表达式,用于匹配字符串模式。在这个问题中,我们需要使用正则表达式来匹配没有协议的URL,同时忽略有协议的URL。

以下是一个示例的正则表达式模式,可以用于匹配没有协议的URL:

代码语言:javascript
复制
/^(?!https?:\/\/)(?:\w+\.)+\w+(?:\/\S*)?$/

解析:

  • ^ 表示匹配字符串的开头
  • (?!https?:\/\/) 使用负向前瞻,表示不匹配以 http://https:// 开头的字符串
  • (?:\w+\.)+ 表示匹配一个或多个字母数字字符和一个点号,重复多次
  • \w+ 表示匹配一个或多个字母数字字符
  • (?:\/\S*)? 表示匹配一个斜杠后跟零个或多个非空白字符的组合,该组合是可选的
  • $ 表示匹配字符串的结尾

这个正则表达式可以匹配以下类型的URL:

  • example.com
  • subdomain.example.com
  • example.com/path
  • subdomain.example.com/path

以下是一个示例代码,演示如何使用正则表达式进行匹配:

代码语言:javascript
复制
const regex = /^(?!https?:\/\/)(?:\w+\.)+\w+(?:\/\S*)?$/;

const urls = [
  'example.com',
  'http://example.com',
  'https://example.com',
  'subdomain.example.com',
  'http://subdomain.example.com',
  'https://subdomain.example.com',
  'example.com/path',
  'http://example.com/path',
  'https://example.com/path',
  'subdomain.example.com/path',
  'http://subdomain.example.com/path',
  'https://subdomain.example.com/path'
];

urls.forEach(url => {
  if (regex.test(url)) {
    console.log(`${url} 匹配成功`);
  } else {
    console.log(`${url} 匹配失败`);
  }
});

输出结果:

代码语言:txt
复制
example.com 匹配成功
http://example.com 匹配失败
https://example.com 匹配失败
subdomain.example.com 匹配成功
http://subdomain.example.com 匹配失败
https://subdomain.example.com 匹配失败
example.com/path 匹配成功
http://example.com/path 匹配失败
https://example.com/path 匹配失败
subdomain.example.com/path 匹配成功
http://subdomain.example.com/path 匹配失败
https://subdomain.example.com/path 匹配失败

在腾讯云的产品中,可以使用云函数 SCF(Serverless Cloud Function)来实现对正则表达式的匹配。您可以通过以下链接了解更多关于腾讯云云函数 SCF 的信息:

请注意,以上答案仅供参考,具体的实现方式可能因您的需求和环境而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django 1.10中文文档-第一个应用Part1-请求与响应

注意:现在忽略有关未应用数据库迁移警告;下面教程将很快处理数据库 这表明你已经启动了Django开发服务器,一个用纯Python写轻量级Web服务器。...下面是具体解释: url() 参数:regex regex是正则表达式通用缩写,它是一种匹配字符串或url地址语法。...Django拿着用户请求url地址,在urls.py文件中对urlpatterns列表中每一项条目从头开始进行逐一对比,一旦遇到匹配项,立即执行该条目映射视图函数或二级路由,其后条目将不再继续匹配...需要注意是,regex不会去匹配GET或POST参数或域名,例如对于https://www.example.com/myapp, regex只尝试匹配myapp/。...page=3, regex也只尝试匹配myapp/ url() 参数:view 当正则表达式匹配到某个条目时,自动将封装HttpRequest对象作为第一个参数,正则表达式“捕获”到值作为第二个参数

1.4K50
  • 自创Web框架之过度Django框架

    基于TCP、IP作用于应用层之上协议 基于请求响应 无状态 无(短)连接 长连接:websocket 数据格式 请求首行(http协议版本,网络请求方法) 请求头(一大堆k,v键值对).../r/n # 换行符不能省略 请求体(存放是一些数据,并不是每种请求方式都有请求体,get没有请求体,post有请求体) # 请求方式 get:朝服务器索要数据,比如输入网址获得相应数据...func = None for url in urls: if current_path == url[0]: # 匹配成功将url对应函数名赋值给...# 定义一个变量存储匹配函数名 func = None for url in urls: if current_path == url[0]:...= env.get('PATH_INFO') # 定义一个变量存储匹配函数名 func = None for url in urls: if current_path

    52310

    制作类似ThinkPHP框架中PATHINFO模式功能

    所以就决定制作一个这样功能用于自己小框架URL上啦。之前一直想去研究一下ThinkPHP原码,由于没有时间,到现在都还没有去实施。...好啦扯远啦,言归正传,我所制作PATHINFO功能上和ThinkPHP是一致,至于里面的深层原理效率问题什么,是否和TP中PATHINFO一样就不太清楚啦,毕竟还没有去研究TP原码,这里就按照我自己思路来写...='$@u'; 68 return $regex; 69 } 70 71 /*public,将输入URL与定义正则表达式进行匹配 72 @input...'>】,是用来后面的preg_match匹配,后面讲解。 4、switch中,就是匹配选择正则表达式,可以是已经定义好,也可以是自己所写。...这里URL路径是没有处理大小写,所以module、controller、action都是对大小写敏感。 多一点思考、多一点琢磨、多一点敲代码,争取早日迈入大神行列!

    1.1K30

    Django之URL(路由系统)用法

    下面是具体解释: regexregex是正则表达式通用缩写,它是一种匹配字符串或url地址语法。...Django拿着用户请求url地址,在urls.py文件中对urlpatterns列表中每一项条目从头开始进行逐一对比, 一旦遇到匹配项,立即执行该条目映射视图函数或二级路由,其后条目将不再继续匹配...需要注意是,regex不会去匹配GET或POST参数或域名,例如对于https://www.example.com/myapp/,regex只尝试匹配myapp/。...page=3,regex也只尝试匹配myapp/。 如果你想深入研究正则表达式,可以读一些相关书籍或专论,但是在Django实践中,你不需要多高深正则表达式知识。...1.最基础映射 用户访问http://127.0.0.1:8000/index 然后后端使用index()函数处理(简单来说就是硬性匹配,写什么就去匹配什么,没有一点回旋余地) urls.py from

    1.8K10

    二.Python能做什么渗透?正则表达式、网络爬虫和套接字通信入门

    正则表达式(RegEx)使用单个字符串来描述、匹配一系列符合某个句法规则字符串。例如,如果想获取里面的ip地址,就需要使用正则表达式实现。...', 'th'],依次匹配t加任意字符两个字符。 斜杠(\)表示匹配转义字符 如果需要匹配点的话,必须要\转义字符。...假设我们想爬取某网站公开信息,但通过翻页发现这个页面的url地址是不变,我们大致就可以判断出,中间表格数据是通过js动态加载,我们可以通过分析抓包,找到真实请求地址。...TCP套接字这个类型表示它作为流套接字特点。由于这些套接字使用网际协议IP来查找网络中主机,所以这样形成整个系统,一般会由这两个协议(TCP和IP)组合描述,即TCP/IP。...数据报没有这些负担,所有它会更”便宜“,通常能提供更好性能,更适合某些场合,如现场直播要求实时数据讲究快等。 实现这种连接主要协议是用户数据报协议UDP。

    1.3K20

    创建一个模块应用

    视图创建完成后,我们要将视图和对应URL地址进行关联,项目中url地址映射主要配置文件是urls.py,在polls模块中创建urls.py配置文件,并修改polls/urls.py文件内容如下:...中进行正则匹配:url(r"^polls", include("polls/urls")),开始打开通过include包含polls.urls子模块映射文件polls/urls.py 4.进入项目子模块...polls映射文件中进行匹配,由于polls/路径已经匹配通过,开始匹配polls/后面的路径-> 路径为:""; 进入polls/urls.py中查找对应路径->url(r"^$", view.index...OK,经过上面的分析之后,我们启动项目python3 manage.py runserver,然后通过浏览器进行访问 附注:url(regex, view, kw, name)参数解析 参数...regex:这是一个正则表达式,用于匹配接收到url路径,Django会按照顺序进行正则表达式匹配匹配成功就会调用指定资源 参数view:当第一个正则表达式路径匹配成功时,Django就会开始调用

    34310

    三十三.Python攻防之正则表达式、网络爬虫和套接字通信入门(2)

    正则表达式(RegEx)使用单个字符串来描述、匹配一系列符合某个句法规则字符串。例如,如果想获取里面的ip地址,就需要使用正则表达式实现。...', 'th'],依次匹配t加任意字符两个字符。 斜杠(\)表示匹配转义字符 如果需要匹配点的话,必须要\转义字符。...假设我们想爬取某网站公开信息,但通过翻页发现这个页面的url地址是不变,我们大致就可以判断出,中间表格数据是通过js动态加载,我们可以通过分析抓包,找到真实请求地址。...TCP套接字这个类型表示它作为流套接字特点。由于这些套接字使用网际协议IP来查找网络中主机,所以这样形成整个系统,一般会由这两个协议(TCP和IP)组合描述,即TCP/IP。...数据报没有这些负担,所有它会更”便宜“,通常能提供更好性能,更适合某些场合,如现场直播要求实时数据讲究快等。 实现这种连接主要协议是用户数据报协议UDP。

    1.2K20

    【Django】 Python Web 框架基础

    找到 主路由文件;默认情况下,该文件在 项目同名目录下urls; 例如 mysite1/mysite1/urls.py Django 加载 主路由文件中 urlpatterns 变量 依次匹配 urlpatterns...中 URL, 匹配到第一个合适中断后续匹配 匹配成功 - 调用对应视图函数处理请求,返回响应 匹配失败 - 返回404响应 # 主路由-urls.py样例: from django.urls import...P\d{1,2})$',views.cal_view), HTTP协议 请求是指浏览器端通过HTTP协议发送给服务器端数据 响应是指服务器端接收到请求后做相应处理后再回复给浏览器端数据...HTTP状态码分类 HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码类型,后两个数字没有分类作用。...常用Content-Type如下: 'text/html'(默认,html文件) 'text/plain'(纯文本) 'text/css'(css文件) 'text/javascript'(js文件

    2.1K20

    Django来敲门~第一部分【4. 创建第一个模块应用】

    视图创建完成后,我们要将视图和对应URL地址进行关联,项目中url地址映射主要配置文件是urls.py,在polls模块中创建urls.py配置文件,并修改polls/urls.py文件内容如下:...请求流程图 1.客户端发起请求:http://localhost:8000/polls 2.项目接收到用户请求,url地址-> polls/ 3.进入项目的映射文件urls.py中进行正则匹配...映射文件中进行匹配,由于polls/路径已经匹配通过,开始匹配polls/后面的路径-> 路径为:""; 进入polls/urls.py中查找对应路径->url(r"^$", view.index...浏览器访问子模块应用 附注:url(regex, view, kw, name)参数解析 参数regex:这是一个正则表达式,用于匹配接收到url路径,Django会按照顺序进行正则表达式匹配...,匹配成功就会调用指定资源 参数view:当第一个正则表达式路径匹配成功时,Django就会开始调用view参数指向视图函数,并且将django.http.HttpRequest内置对象作为函数第一个参数传递给函数并且调用执行函数

    32710

    爬取千千音乐动态传输内容

    爬取千千音乐动态传输内容 1.首先千千音乐robots协议 User-agent: Baiduspider Allow: / User-agent: Baiduspider-image Allow:...,创建以歌单为名字文件夹并且下载歌单内所有歌曲保存至本地 3.项目介绍功能介绍 难点:千千音乐他音频是由JS生成难点就是找到他js链接 不要加多进程与多线程进去增加千千音乐负担,只做类人爬取,...= zip(music_name,music_urls_list) return dict(music_name_urls_zip) #根据歌单新建歌单名字文件夹位置放在D:\music\...\\music\\') print(catalog) #如果目录没有这个文件 lis = [] #一个歌单放一个列表中 for music_lis in catalog...') text_path = os.path.join(file_path,'匹配失败歌曲.txt') with open(text_path

    58730

    Django学习(一) 之 环境搭建

    django_project/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动网站"目录"。...view: 视图函数,处理与给定路由匹配请求。可以是一个函数或一个基于类视图。 kwargs(可选): 一个字典,包含传递给视图函数额外关键字参数。...2、url函数使用 url() 可以接收四个参数,分别是两个必选参数:regex、view 和两个可选参数:kwargs、name. def url(regex, view, kwargs=None,...name=None): return re_path(regex, view, kwargs, name) regex: 正则表达式,与之匹配 URL 会执行对应第二个参数 view。...view: 用于执行与正则表达式匹配 URL 请求。 kwargs: 视图使用字典类型参数。 name: 用来反向获取 URL。

    27610

    Python中网关:WSGI

    因此理解了前文我对CGI描述,对于理解WSGI是大有裨益(和CGI重合内容我就不提了)。当然就具体接口协议而言,他们是不同。 WSGI不是库,也不是框架。...wsgiref wsgiref模块是python官方库针对wsgi协议一个参考实现,虽然与工业界标准或有差距,但用来学习基本够用。同时该模块实现了一个简单wsgi协议HTTP服务器。...也就是说我们回调是与具体server无关,更换另一个支持wsgi协议server,只是在启动代码做些修改,而我们所关心业务逻辑则丝毫无需改动。...为了解耦,我们可以单写一个URL路由脚本,作为配置文件之用。比如urls.py ... urls = [ (r'^$', index), (r'hello/?...= environ.get('PATH_INFO', '').lstrip('/') for regex, callback in urls: match = re.search

    1.3K20

    Django Path转换器自定义及正则代码实例

    Django默认Path转换器 str:匹配任何非空字符串,但不含斜杠/,如果你没有专门指定转换器,那么这个是默认使用; int:匹配0和正整数,返回一个int类型 slug:可理解为注释、后缀、附属等概念...该转换器匹配任何ASCII字符以及连接符和下划线,比如’ building-your-1st-django-site‘; uuid:匹配一个uuid格式对象。...返回一个UUID对象; path:匹配任何非空字符串,重点是可以包含路径分隔符’/‘。这个转换器可以帮助你匹配整个url而不是一段一段url字符串 ​step1 ....在urls.py 同级目录下,创建converters.py class Year_Converters(): regex = '\d{4}' def to_python(self,value...,py 文件中,注意参数需要加() ,这里参数是元组 from django.urls import re_path urlpatterns = [ re_path('article/(\d+)/

    72760

    python测试开发django-3.url配置

    前言 我们在浏览器访问一个网页是通过url地址去访问,django管理url配置是在urls.py文件。当一个页面数据很多时候,通过会有翻页情况,那么页数是不固定,如:page=1....(pytest当当网,满100-50,点购买按钮直接进入) urls.py配置规则 由于django版本比较多,在查资料时候,也会看到不同版本用不同写法,对于初学者来说是比较迷惑, 总结了下,主要有三个...打开path()和re_path()源码,就能看到path()匹配规则是RoutePattern, re_pat()h匹配规则是RegexPattern path = partial(_path, Pattern...def url(regex, view, kwargs=None, name=None): return re_path(regex, view, kwargs, name) 匹配路径统一在后面加个...=1 ,那就不能这样写死了 url(‘^demo/page=1$’, views.demo) 如果想匹配任意页数,前面的部分demo/page=不变,匹配任意数字,可以用正则\d+匹配 url(‘^

    95730
    领券