JS(JavaScript) 数据校验 正则表达式


天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


乐游原上清秋节,咸阳古道音尘绝。
音尘绝,西风残照,汉家陵阙。
——《忆秦娥·箫声咽》


文章目录

  • JavaScript 数据校验 正则表达式
    • 1. 简介
    • 2. 定义方式
      • 2.1 字面量定义
      • 2.2 构造函数定义
      • 2.3 说明
    • 3. 匹配规则
      • 3.1 元字符
      • 3.2 量词
      • 3.3 特殊符号
    • 4. 基本用法
    • 5. 示例代码
    • 6. 浏览器页面效果
    • 7. 示例代码下载



JavaScript 数据校验 正则表达式

1. 简介

正则表达式是一门独立的语言,有自己的语法,用来检测指定字符串是否符合特定的规则
正则表达式就是用来定义规则的,全称为Regular Expression
JavaScript中提供了RegExp对象,表示正则表达式

2. 定义方式

创建正则表达式对象的方式有两种

2.1 字面量定义

使用字面量定义

var reg = /pattern/attribute;

举例

        var reg = /aaa/i;//a是定义的匹配规则,i是忽略大小写//通过reg的test函数进行验证console.log(reg.test("hahahahahahahab"));

2.2 构造函数定义

使用构造函数定义

var reg = new RegExp(pattern,attribute);

举例

        //定义正则表达式,注意这里的双斜杠中的内容不能以变量传入,只能直接写入var reg2 = new RegExp("aaa","i");//a是定义的匹配规则,i是忽略大小写//通过reg的test函数进行验证console.log(reg2.test("hahahahahahahab"));

2.3 说明

pattern 表示匹配模式,用于指定匹配规则,由元字符、量词、特殊符号组成
attribute 表示匹配特征,取值:i忽略大小写、g全局匹配、m多行匹配

3. 匹配规则

3.1 元字符

元字符:具有特殊含义的字符
相关的元字符和对应的含义如下表

符号描述
\s匹配任何的空白字符
\S任何非空白字符
\d匹配一个数字字符,等价于[0-9]
\D除了数字之外的任何字符
\w匹配一个数字、下划线或字母字符
\W除了数字、下划线或字母字符的其他字符,任何非单字字符,等价于
.匹配除了换行符之外的任意字符

3.2 量词

量词:指定字符出现的次数
相关的元字符和对应的含义如下表

符号描述
{n}匹配前一项n次
{n,}匹配前一项n次,或者多次
{n,m}匹配前一项至少n次,但是不能超过m次
*匹配前一项0次或多次,等价于{0,}
+匹配前一项1次或多次,等价于{1,}
?匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}

3.3 特殊符号

特殊符号:具有特殊含义的符号
相关的元字符和对应的含义如下表

符号描述
/…/代表一个模式的开始和节数
^匹配字符串的开始,即表示行的开始
$匹配字符串的结束,即表示行的结束
[ ]表示可匹配的列表
()用于分组
|表示或者
[^ ]在[]中的尖括号表示非

注:[\u4E00-\u9FA5]用来匹配中文字符

4. 基本用法

使用正则表达式对象的test方法进行规则是否符合的校验
语法

var flag = reg.test(字符串);

判断字符串是否符合正则表达式对象所制定的模式规则,返回true或false

5. 示例代码

以下为各种规则的实例演示

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数据校验-正则表达式</title><script>//定义正则表达式,注意这里的双斜杠中的内容不能以变量传入,只能直接写入var reg = /aaa/i;//或var reg2 = new RegExp("aaa","i");//a是定义的匹配规则,i是忽略大小写//通过reg的test函数进行验证console.log(reg.test("hahahahahahahab"));console.log(reg2.test("hahahahahahahab"));console.log("===================================================");//匹配空白字符var regs = new RegExp("\\s","i");// 是否包含空白字符console.log("匹配空白字符的结果:",regs.test(" "));console.log("===================================================");//匹配非空白字符var reg_not_blank = new RegExp("\\S","i");// 是否包含非空白字符console.log("匹配非空白字符的结果:",reg_not_blank.test("s"));console.log("===================================================");//匹配数字字符[0-9]var reg_digital = new RegExp("\\d","i");// 是否包含数字字符[0-9]console.log("匹配数字字符[0-9]的结果:",reg_digital.test("0"));console.log("===================================================");//匹配除数字之外的任何字符var reg_out_digital = new RegExp("\\D","i");// 是否包含除数字之外的任何字符console.log("匹配除数字之外的任何字符的结果:",reg_out_digital.test("="));console.log("===================================================");//匹配一个数字、下划线或字母字符var reg_digital_underline_letter = new RegExp("\\w","i");// 是否包含一个数字、下划线或字母字符console.log("匹配一个数字、下划线或字母字符的结果:",reg_digital_underline_letter.test("_"));console.log("===================================================");//匹配一个除数字、下划线或字母的其他字符var reg_out_digital_underline_letter = new RegExp("\\W","i");// 是否包含一个除数字、下划线或字母的其他字符console.log("匹配一个除数字、下划线或字母的其他字符的结果:",reg_out_digital_underline_letter.test("="));console.log("===================================================");//匹配一个除换行符之外的任意字符var reg_out_n = new RegExp(".","i");// 是否包含一个除换行符之外的任意字符console.log("匹配一个除换行符之外的任意字符的结果:",reg_out_n.test("-"));console.log("===================================================");console.log("==========================数量符=========================");//匹配前一项字符,并指定匹配的次数var reg_n = new RegExp("a{4}","i");// 是否包含a字符4次console.log("匹配a字符4次的结果:",reg_n.test("saaaasaaaa"));console.log("===================================================");//匹配前一项字符,并指定匹配的次数var reg_n2 = new RegExp("a{4,}","i");// 是否包含a字符4次或多次console.log("匹配a字符4次或多次的结果:",reg_n2.test("aaaaaaaa"));console.log("===================================================");//匹配前一项字符,并指定匹配的次数var reg_nm = new RegExp("a{4,8}","i");// 是否包含a字符4-8次console.log("匹配a字符4-8次的结果:",reg_nm.test("aaaaaaaa"));console.log("===================================================");//匹配前一项字符,并指定匹配的次数var reg_0 = new RegExp("a*","i");// 是否包含a字符0次或多次console.log("匹配a字符0次或多次的结果:",reg_0.test(""));console.log("===================================================");//匹配前一项字符,并指定匹配的次数var reg_1 = new RegExp("a+","i");// 是否包含a字符1次或多次console.log("匹配a字符1次或多次的结果:",reg_1.test("aa"));console.log("===================================================");//匹配前一项字符,并指定匹配的次数var reg_01 = new RegExp("a?","i");// 是否包含a字符0次或1次console.log("匹配a字符0次或1次的结果:",reg_01.test(""));console.log("===================================================");//匹配中文字符var reg_cn = new RegExp("[\u4E00-\u9FA5]","i");// 是否包含中文字符console.log("匹配中文字符的结果:",reg_cn.test("李白"));console.log("===================================================");//匹配以什么字符开始的字符var reg_start = new RegExp("^d","i");// 是否以d开头的字符console.log("匹配以d开头的字符的结果:",reg_start.test("di"));console.log("===================================================");//匹配以什么字符结尾的字符var reg_end = new RegExp("ss$","i");// 是否以d结尾的字符console.log("匹配以d结尾的字符的结果:",reg_end.test("ss"));console.log("===================================================");//匹配匹配列表里的内容,或的关系,表示里表中的任意一个字符被包含即可var reg_mid = new RegExp("[aacc]","i");// 是否包含列表中的某个字符console.log("匹配列表中的某个字符的结果:",reg_mid.test("addd"));console.log("===================================================");//匹配分组中的字符串var reg_mid = new RegExp("(abdc)","i");// 是否包含字符串abdcconsole.log("匹配abdc字符串的结果:",reg_mid.test("abdc"));console.log("===================================================");//匹配任意分组的字符串var reg_mid = new RegExp("(abdc)|(aadd)","i");// 是否包含任意分组的字符串console.log("匹配任意分组的字符串的结果:",reg_mid.test("aadd"));console.log("===================================================");//匹配非某些字符的其他字符var reg_mid = new RegExp("[^0-9]","i");// 是否包含0-9之外的字符console.log("匹配0-9之外的字符串的结果:",reg_mid.test(" "));console.log("===================================================");//匹配规则的开始和结束,这里有点问题,布置到怎么应用var reg_mid = new RegExp("/libai/","i");// 是否包含libaiconsole.log("匹配0-9之外的字符串的结果:",reg_mid.test("libai"));console.log("===================================================");</script></head>
<body></body>
</html>

6. 浏览器页面效果

使用浏览器打开页面控制台,查看校验的输出结果
在这里插入图片描述

7. 示例代码下载

正则表达式相关示例代码已上传CSDN
下载地址:JavaScript 数据校验 正则表达式 示例代码


感谢阅读,祝君暴富!


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

摸鱼大数据——Spark Core——RDD的基本介绍和如何构建RDD

1、什么是RDD RDD&#xff1a;英文全称Resilient Distributed Dataset&#xff0c;叫做弹性分布式数据集&#xff0c;代表一个不可变、可分区、里面的元素可并行计算的分布式的抽象的数据集合。 Resilient弹性&#xff1a;RDD的数据可以存储在内存或者磁盘当中&#xff0c;RDD…

java常用类(3)

目录 一. 正则表达式 二. Math类 三. Random类 四. Date类 五. Calendar类 六. SimpDateFormate类 七. BigInteger类 八. BigDecimal类 一. 正则表达式 正则表达式(Regular Expression)就是用一些特殊的符号去匹配一个字符串是否符合规则,利用String类中的matches()方…

[Leetcode 136][Easy]-只出现一次的数字

目录 题目描述 具体思路 题目描述 原题链接 具体思路 ①首先看到数组中重复的数字&#xff0c;想到快慢指针&#xff0c;但是数组的元素是乱序的不好求。因此先对数组排序。使用了STL库的sort函数&#xff0c;时间复杂度O(nlogn)不符合题目要求&#xff0c;空间复杂度O(1)。…

KEYSIGHT是德科技 E5063A ENA 系列网络分析仪

E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪&#xff0c;可用于测试简单的无源元器件&#xff0c;例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列…

打卡第一天

今天是参加算法训练营的第一天&#xff0c;希望我能把这个训练营坚持下来&#xff0c;希望我的算法编程题的能力有所提升&#xff0c;不再面试挂了&#xff0c;面试总是挂编程题&#xff0c;记录我leetcode刷题数量&#xff1a; 希望我通过这个训练营能够实现两份工作的无缝衔接…

用720云搭建数字孪生VR智慧安防系统,赋能安防升级!

“安全防范"一直是我国城镇化发展进程中重点关注的工作板块&#xff0c;随着时代发展需求与科技的日新月异&#xff0c;安防行业正在积极融合VR3D数字孪生技术&#xff0c;升级安防数字基础设施和安防产品服务创新。 今年2月&#xff0c;《数字中国建设整体布局规划》的出…

docker容器间网络仿真工具-pumba

docker-tc&pumba docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预&#xff0c;包括延迟&#xff0c;丢包&#xff0c;带宽限制等。 但是我在实际使用时&#xff0c;发现docker-tc这个工具在进行网络进行模…

如何使用python网络爬虫批量获取公共资源数据教程?

原文链接&#xff1a;如何使用python网络爬虫批量获取公共资源数据教程&#xff1f;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608240&idx4&snef281f66727afabfaae2066c6e92f792&chksmfa826657cdf5ef41571115328a09b9d34367d8b11415d5a5781dc4c…

84 柱状图中最大的矩形

题目 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xff1a;最大的矩…

从全连接到卷积

一、全连接到卷积 1、卷积具有两个原则&#xff1a; 平移不变性&#xff1a;无论作用在哪个部分&#xff0c;它都要有相同的作用&#xff0c;而不会随着位置的改变而改变 局部性&#xff1a;卷积核作用处&#xff0c;作用域应该是核作用点的周围一小部分而不作用于更大的部分 …

【无需公网IP】在树莓派上搭建Web站点

目录 1.概述 2.使用 Raspberry Pi Imager 安装 Raspberry Pi OS 3.设置 Apache Web 服务器 3.1测试 web 站点 3.2安装静态样例站点 3.3将web站点发布到公网 3.4安装 Cpolar 3.5cpolar进行token认证 3.6生成cpolar随机域名网址 3.7生成cpolar二级子域名 3.8将参数保存…

linux 下,Java由Java8升级到Java11,Java不更新版本号

在ES对接过程&#xff0c;springboot3进行对接&#xff0c;需要将Java升级到11版本。首先下载安装选好的11版本Java&#xff0c;在linux下解压后&#xff0c;配置/etc/profile export JAVA_HOME/root/SJL/jdk-11.0.22 然后保存&#xff0c;执行文件source /etc/profile&#…

Linux多进程和多线程(一)-进程的概念和创建

进程 进程的概念进程的特点如下进程和程序的区别LINUX进程管理 getpid()getppid() 进程的地址空间虚拟地址和物理地址进程状态管理进程相关命令 ps toppstreekill 进程的创建 并发和并行fork() 父子进程执行不同的任务创建多个进程 进程的退出 exit()和_exit() exit()函数让当…

【机器学习】机器学习与电商推荐系统的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在电商推荐系统中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 特征工程 1.2 模型选择1.2.1 协同过滤1.2.2 矩阵分解1.2.3 基于内容的推荐1.2.4 混合推荐 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化器 …

根据后端返回的省市区重新封装树结构(省市区通过children表示)

对比图&#xff08;截取部分&#xff09;&#xff1a; 注&#xff1a;先看分步&#xff0c;最后会附上完整代码&#xff08;如果有用&#xff0c;可以给小编点个赞吗&#xff1f;十分感谢&#xff09; 1.首先将前端返回相同的省份只展示一次 const obj {}; let keyList []r…

最新简约美观的网址网站引导页HTML源码

最新简约美观的网址网站引导页HTML源码 带一言 随机大图 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89487135 更多资源下载&#xff1a;关注我。

分布式数据库HBase:从零开始了解列式存储

在接触过大量的传统关系型数据库后你可能会有一些新的问题: 无法整理成表格的海量数据该如何储存? 在数据非常稀疏的情况下也必须将数据存储成关系型数据库吗? 除了关系型数据库我们是否还有别的选择以应对Web2.0时代的海量数据? 如果你也曾经想到过这些问题, 那么HBase将是…

【教程】lighttpd配置端口反向代理

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 1、修改配置文件&#xff1a; sudo vim /etc/lighttpd/lighttpd.conf2、先添加mod_proxy&#xff1a; 3、然后添加端口映射&#xff1a; 4、保存&…

24位DAC转换的FPGA设计及将其封装成自定义IP核的方法

在vivado设计中,为了方便的使用Block Desgin进行设计,可以使用vivado软件把自己编写的代码封装成IP核,封装后的IP核和原来的代码具有相同的功能。本文以实现24位DA转换(含并串转换,使用的数模转换器为CL4660)为例,介绍VIVADO封装IP核的方法及调用方法,以及DAC转换的详细…

SpringBoot 通过Knife4j集成API文档 在线调试

介绍 Knife4j 是一款基于 Swagger 构建的增强型 API 文档生成工具&#xff0c;它提供了更多的定制化功能和界面优化&#xff0c;使得生成的 API 文档更加美观和易用。它可以帮助开发者快速生成和管理 API 文档&#xff0c;支持在线调试和交互。 依赖 <!--knife4j--> &…