js正则表达式系统讲解(全面的总结)

简介: 笔记

1.声明与使用


  • 通过构造函数定义(一般不这么干)
let 变量名= new RegExp(/表达式/);
  • 字面量直接定义(一般这么干)
let 变量名= /表达式/;
  • 常用方法(一般用于检测传入的字符串是否符合该规则并返回布尔值)
exp.test("要检测的字符串")


2.预定义类与转义符


. [^\n\r] 除了换行和回车之外的任意字符

\d [0-9] 数字字符digit

\D [^0-9] 非数字字符

\w [a-zA-Z0-9_] 单词字符(所有的英文字母数字和_) word

\W [^a-zA-Z0-9_] 非单词字符

\s [\f\r\n\t\v] 不可见字符 space

\S [^\f\r\n\t\v] 可见字符

\f 表示换页 form feed

\t 表示水平制表符 table


\v 表示垂直制表符 vertical table

31.png

\r,\n,\r\n的区别(顺便科普一下)

在万恶的旧社会,打字机换行(\n newline)之后只会下移一行,需要回到一行的开头(\r return)才能继续打字

老式的操作系统也继承了打字机的这一特性,但用户换行之后一般都是要回到开头的,因此新式的操作系统为了方便将键盘上的Enter键的含义修改为\r\n或者直接将\n的含义改为“移动到下一行的开头”。

| 表示或 或的优先级最低 可以通过()提升优先级


3. 字符类


简单类[abc] 表示该位置可以出现的字符

负向类[^abc] 表示该位置不可以出现的字符

范围类[a-e] 表示该位置可以出现的字符的范围

组合类[a-xA-E0-9] 范围类的组合


4. 边界,量词,括号


^ 会匹配行或者字符串的起始位置

^只有在[]内才表示非 在外边表示开始

$ 会匹配行或字符串的结尾位置

^$在一起 表示必须是这个(精确匹配)

“*” 重复零次或更多 x>=0

“+” 重复一次或更多次 x>=1

“?” 重复零次或一次 x=(0||1)

{n} n次 x=n

{n,} 重复n次或更多 x>=n

{n,m} 重复出现的次数比n多但比m少 n<=x<=m

()表示一组

[]表示一个字符的位置

{}表示次数



// 1. 匹配国内电话号码
let tel = /^0\d{2,3}-\d{7,8}$/
// 2. 匹配姓名
let name = /^[\u4e00-\u9fa5]{2,}$/
// 3.匹配腾讯QQ号
let qq = /^[1-9]\d{4,10}$/
// 4. 匹配手机号
let phone = /^(13[0-9]|14[57]|15[0-9]|18[0-9])\d{8}$/
// 5.匹配邮箱
let emai = /^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
// 6. 验证中文
let regex = /^[\u0391-\uFFE5]+$/;
// 7. 验证身份证
let idCrad = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/;
// 8. 验证整数
let number = /^[-+]?\d*$/;
// 9. 验证日期格式是否为YYYY-MM-DD hh:mm:ss格式
let date = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
// 10. 验证输入的字符是否是英文字母
let en = /^[a-zA-Z]+$/
// 11. 百度网盘链接匹配
// 支持两种百度分享的两种链接格式
// 格式一:链接: https://pan.baidu.com/s/15gzY8h3SEzVCfGV1xfkJ 提取码: vsuw 复制这段内容后打开百度网盘手机App,操作更方便哦
// 格式二:http://pan.baidu.com/share/link?shareid=179436&uk=32720556 提取码: vsuw 复制这段内容后打开百度网盘手机App,操作更方便哦
let reg = /([http|https]*?:\/\/pan\.baidu\.com\/[(?:s\/){0,1}|(share)]*(?:[0-9a-zA-Z?=&])+)(?:.+:(?:\s)*)?([a-zA-Z]{4})?/;
// 12. 是否带有小数
let  objRegExp= /^\d+\.\d+$/;
// 13. 校验是否全由8位数字组成
let reg = /^[0-9]{8}$/



目录
相关文章
|
24天前
|
JavaScript 前端开发 开发者
Vue.js 框架大揭秘:响应式系统、组件化与路由管理,震撼你的前端世界!
【8月更文挑战第27天】Vue.js是一款备受欢迎的前端JavaScript框架,以简洁、灵活和高效著称。本文将从三个方面深入探讨Vue.js:响应式系统、组件化及路由管理。响应式系统为Vue.js的核心特性,能自动追踪数据变动并更新视图。例如,通过简单示例代码展示其响应式特性:`{{ message }}`,当`message`值改变,页面随之自动更新。此外,Vue.js支持组件化设计,允许将复杂界面拆分为独立且可复用的组件,提高代码可维护性和扩展性。如创建一个包含标题与内容的简单组件,并在其他页面中重复利用。
47 3
|
2月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
70 2
|
8天前
|
自然语言处理 JavaScript 前端开发
JavaScript 正则表达式
JavaScript 正则表达式
10 3
|
1月前
|
机器学习/深度学习 人工智能 前端开发
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本中的积极、消极或中性情感。
56 4
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
|
1月前
|
JavaScript 前端开发
js中通过正则表达式验证邮箱是否合法
这篇文章提供了一个JavaScript示例,通过正则表达式在网页上验证用户输入的邮箱地址是否合法,并给出了相应的提示信息。
js中通过正则表达式验证邮箱是否合法
|
1月前
|
存储 安全 前端开发
|
1月前
|
存储 缓存 JSON
Node.js有哪些模块系统
【8月更文挑战第12天】Node.js有哪些模块系统
32 3
|
1月前
|
JavaScript
【Deepin 20系统】Jupyter notebook解决ValueError: Please install Node.js and npm before continuing installa
文章讨论了在Deepin 20系统上安装Jupyter Notebook的debug插件时出现的"ValueError: Please install Node.js and npm before continuing installation"错误,并提供了使用conda安装Node.js的解决方法。
69 1
|
30天前
|
JavaScript 前端开发 安全
TypeScript:解锁JavaScript的超级英雄模式!类型系统如何化身守护神,拯救你的代码免于崩溃与混乱,戏剧性变革开发体验!
【8月更文挑战第22天】TypeScript作为JavaScript的超集,引入了强大的类型系统,提升了编程的安全性和效率。本文通过案例展示TypeScript如何增强JavaScript:1) 显式类型声明确保函数参数与返回值的准确性;2) 接口和类加强类型检查,保证对象结构符合预期;3) 泛型编程提高代码复用性和灵活性。这些特性共同推动了前端开发的标准化和规模化。
48 0
|
2月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
67 4