【JS】正则表达

news2024/9/24 17:03:22

正则表达式

reg = /匹配规则/
reg.test(str)
1.边界符:^ 以...开头,$  以...结尾
2.量词:* 出现0次或多次,+ 出现1次或多次, ? 出现0次或1次,{n}出现n次,{n,m}出现n到m次
3.字符类:[]中的字符任一出现,就是true,如果出现多个,加量词。
	如:[abc]{n,}
	如果在[]里面加^,表示取反
	. 匹配除换行符以外的任一单个字符
	\w 匹配数字、字母、下划线;\s匹配空格

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

案例:匹配输入是否符合xxx-xxx-xxx,x为数字

<body>
    <input type="text" />
    <script>
        let telnum = document.querySelector('input')
        let = reg = /^\d{3}-\d{3}-\d{3}$/
        telnum.addEventListener('blur', function () {
            console.log(reg.test(telnum.value));
        })
    </script>
</body>
或者
function matchPatter(str) {
    let reg = /^[0-9]{3}-[0-9]{3}-[0-9]{3}$/
    return reg.test(str)
}
console.log(matchPatter('111-111-222'));
console.log(matchPatter('111'));

RGB转换成16进制

// rgb是0-255的三个数字rgb(233,167,32) 10进制的
// 以rgb开头
function rgb216(rgbcolor) {
    // ()括起来的是一个元字符整体
    let reg = /^(rgb|rgba|RGB|RGBA)\(\d{1,3},\d{1,3},\d{1,3}(,([.\d]+))?\)/
    // 把前面的rgb换成空,然后数字转换成数组
    if (reg.test(rgbcolor)) {
        // 符合转换为16进制 去掉rgb和左右括号 转数字转换成数组
        rsa = rgbcolor.replace(/(\(|\)|rgba|rgb|RGBA|RGB)*/g, '').split(',')
        console.log(rsa);
        r = (+rsa[0]).toString(16);//先强制转陈数字,再转成16进制
        // 如果16进制长度是1位 就要前面加0
        r = r.length == 1 ? '0' + r : r;
        g = (+rsa[1]).toString(16);
        g = g.length == 1 ? '0' + g : g;
        b = (+rsa[2]).toString(16);
        b = b.length == 1 ? '0' + b : b;
        // 透明度 有就取有的值 没有就是默认为1
        a = (+(rsa[3] ? rsa[3] : 1)) * 100;
        let hex = '#' + r + g + b
        console.log("hex:", hex, a);
        return hex
        // return { hex: '#' + r + g + b, r: parseInt(r, 16), g: parseInt(g, 16), b: parseInt(b, 16), alpha: Math.ceil(a) };
    } else {
        // 不符合直接返回输入
        console.log("不符合规范", rgbcolor);
        return rgbcolor
    }
}
rgb216('rgb(155,10,20)')

16进制转RGB

function hex2rgb(hexcolor) {
    // 16进制的0-9或a-f的形式
    let reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/
    if (reg.test(hexcolor)) {
        console.log(111);
        // 判断长度 如果是4,就是单个数为16进制 #fff
        let rgb = 'rgb('
        if (hexcolor.length === 4) {
            for (let i = 1; i < 4; i++) {
                rgb += parseInt(hexcolor.slice(i, i + 1), 16) + (i < 3 ? ',' : '')
            }
            // 最后一个逗号换成)
            rgb += ')'
            console.log(rgb);
        }
        if (hexcolor.length === 7) {
            for (let i = 1; i < 7; i = i + 2) {
                rgb += parseInt(hexcolor.slice(i, i + 2), 16) + (i < 4 ? ',' : '')
            }
            // 最后一个逗号换成)
            rgb += ')'
            console.log(rgb);
        }
    } else {
        console.log("不符合16进制");

    }
}
hex2rgb('#f2f2f2')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机的避障的航迹规划详解!!!

一、无人机避障技术 视觉避障系统&#xff1a;通过安装在无人机上的摄像头捕捉周围环境的图像&#xff0c;利用计算机视觉技术对图像进行处理和分析&#xff0c;提取出障碍物的信息。这种方法直观、信息丰富&#xff0c;但在光线不足或变化多的情况下可能影响识别效果&#xf…

生成测试图片的步骤

生成测试图片的步骤&#xff1a; 1、通义万象画图&#xff1a;https://tongyi.aliyun.com/wanxiang/creation 2、改图宝修改尺寸&#xff1a;https://www.gaitubao.com/

set的使用

序列式容器和关联式容器 序列式容器&#xff1a; 前⾯我们已经接触过STL中的部分容器如&#xff1a;string、vector、list、deque、array、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为逻辑结构为线性序列的数据结构&#xff0c;两个位置存储的值之间…

【Python报错已解决】AttributeError: ‘Tensor‘ object has no attribute ‘kernel_size‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

使用compile_commands激活vscode索引-跳转-代码提示功能

最近发现&#xff0c;使用vscode打开一个大的c工程很容易无法正常调转和代码提示。所以经常会手动修改.vscode/c_cpp_properties.json文件的"includePath"属性。然而&#xff0c;当pkg越来越多 工程体量越来越大之后&#xff0c;我不得不探索如何自动的完成这一过程&…

Matplotlib画图相关代码

绘制不同类型的线条 import matplotlib.pyplot as plt import numpy as npx np.array([1, 2, 3]) y np.array([2, 4, 6])# 不同线型的示例 plt.plot(y, marker*, linestyle-) # 实线 plt.plot(y 1, markero, linestyle--) # 虚线 plt.plot(y 2, markerx, linestyle-.)…

【IDEA配置Maven环境】

在IDEA欢迎界面 选择 IDEA中 Customize > ALLSettings > Build,Execution,Deployment > Build Tools > Maven

VirtualBox+Vagrant快速搭建Centos7系统【最新详细教程】

VirtualBoxVagrant快速搭建Centos7系统 &#x1f4d6;1.安装VirtualBox✅下载VirtualBox✅安装 &#x1f4d6;2.安装Vagrant✅下载Vagrant✅安装 &#x1f4d6;3.搭建Centos7系✅初始化Vagrantfile文件生成✅启动Vagrantfile文件✅解决 vagrant up下载太慢的问题✅配置网络ip地…

从零开始的软件开发详解:数字药店系统源码与医保购药APP

很多小伙伴们疑问&#xff0c;医保购药APP是如何开发的&#xff0c;今天我将从零数字药店系统源码开始为大家提供一条清晰的实现方案。 一、技术架构设计 在开发医保购药APP之前&#xff0c;首先需要明确技术架构。一般来说&#xff0c;APP的技术架构可以分为前端和后端。 1…

网络分段:您需要了解的一切

什么是网络分段&#xff1f;为什么它很重要&#xff1f; 在当今互联互通的世界中&#xff0c;网络分段已成为组织网络安全战略中不可或缺的一部分。随着网络威胁不断演变和变得更加复杂&#xff0c;保护网络免受潜在入侵并尽量减少攻击面变得至关重要。根据最近的研究&#xf…

C++ 进阶之路:非类型模板参数、模板特化与分离编译详解

目录 非类型模版参数 类型模板参数 非类型模板参数 非类型模板参数的使用 模板的特化 函数模板的特化 类模板的特化 全特化与偏特化 偏特化的其它情况 模板的分离编译 什么是分离编译 为什么要分离编译 为什么模板不能分离编译 普通的类和函数都是可以分离编译的…

数据定义语言CREATE的应用

新书速览|SQL Server 2022从入门到精通&#xff1a;视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) SQL Se…

相交链表 -------------应用

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&…

2024上海工博会,正运动机器视觉运动控制一体机应用预览(三)

■展会名称&#xff1a; 第二十四届中国国际工业博览会&#xff08;以下简称“上海工博会”&#xff09; ■展会日期 2024年9月24日–28日 ■展馆地点 中国国家会展中心&#xff08;上海&#xff09; ■展位号 6.1H-E261 本次上海工博会&#xff0c;正运动技术将携高性…

微信小程序开发项目

微信小程序是一种轻量级的应用程序&#xff0c;无需下载即可使用&#xff0c;并且具有即用即走的特点。这种新型的应用程序正在改变人们的使用习惯&#xff0c;使得人们可以更加方便快捷地获取信息和服务。本文将详细介绍微信小程序的开发过程&#xff0c;包括开发前的准备、开…

9.3 Linux_文件I/O_相关函数

打开与关闭 1、打开文件 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);返回值&#xff1a;成功返回文件描述符&#xff0c;失败返回EOF pathname&#xff1a;文件路径 flags&#xff1a;标志&#xff0c;其中O_RDO…

CUDA安装教程+显卡驱动安装

CUDA安装教程显卡驱动安装 新的ubuntu系统&#xff0c;需要重新安装显卡驱动&#xff0c;以及cuda&#xff0c;记录以下坑点&#xff1a; 先安装显卡 nvidia-smi输入后出现 首先知道自己的GPU型号&#xff0c;如RTX 4090 这里下载&#xff1a;https://www.nvidia.com/Down…

自动化学习2:pytest的高级用法(mark标记/fixture/hook)

一.mark的用法 概念&#xff1a;Pytest提供的mark标记&#xff0c;允许我们标记测试函数&#xff0c;测试类和整个模块。通过不同的标记实现不同的运行策略&#xff0c;如标记冒烟测试用例。 1.注册标记 可以在pytest.ini文件注册自定义标记 除了自己注册的标记外&#xff0…

网安新声 | 黎巴嫩BP机爆炸事件带来的安全新挑战与反思

网安加社区【网安新声】栏目&#xff0c;汇聚网络安全领域的权威专家与资深学者&#xff0c;紧跟当下热点安全事件、剖析前沿技术动态及政策导向&#xff0c;以专业视野和前瞻洞察&#xff0c;引领行业共同探讨并应对新挑战的策略与可行路径。 9月17日&#xff0c;黎巴嫩境内发…

一文学会 Java 8 的Predicates

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 在这份详细的指南中&#xff0c;您将了解 Java Predicates&#xff0c;这是 Java 8 中一个新颖且有用的特性。本文解释了 Java Predicates 是什么以及如何在各种情况下使用它们。 在这份详尽的指南中…