前端JavaScript入门-day08-正则表达式

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

介绍

语法 

元字符 

边界符 

量词 

字符类:

修饰符


介绍

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象,通常用来查找、替换那些符合正则表达式的文本
正则表达式在 JavaScript中的使用场景:
例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文( 匹配 )    比如用户名: /^[a-z0-9_-]{3,16}$/
过滤掉页面内容中的一些敏感词( 替换 ),或从字符串中获取我们想要的特定部分( 提取 )等 

语法 

1. 定义正则表达式语法:

其中 / / 是正则表达式字面量

比如:

2.判断是否有符合规则的字符串: 

test() 方法 用来查看正则表达式与指定的字符串是否匹配

语法:
比如:
console.log(/哈/.test('哈')) // true
console.log(/哈/.test('哈哈')) // true
console.log(/哈/.test('二哈')) // true
如果正则表达式与指定的字符串匹配 ,返回true,否则false

3.检索(查找)符合规则的字符串:

exec() 方法 在一个指定字符串中执行一个搜索匹配
语法:
比如:
如果匹配成功,exec() 方法返回一个数组,否则返回null

元字符 

普通字符:
大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。
也就是说普通字符只能够匹配字符串中与它们相同的字符。
元字符(特殊字符)
是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。
比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm…..
但是换成元字符写法: [a-z]
为了方便记忆和学习,我们对众多的元字符进行了分类:
        边界符表示位置,开头和结尾,必须用什么开头,用什么结尾
        量词表示重复次数
        字符类比如 \d 表示 0~9

边界符 

正则表达式中的边界符(位置符)用来 提示字符所处的位置 ,主要有两个字符

如果 ^ 和 $ 在一起,表示必须是精确匹配。 

    console.log(/^哈/.test('哈')) // trueconsole.log(/^哈/.test('哈哈')) // trueconsole.log(/^哈/.test('二哈')) // flaseconsole.log(/^哈$/.test('哈')) // true  只有这种情况为true 否则全是falseconsole.log(/^哈$/.test('哈哈')) // falseconsole.log(/^哈$/.test('二哈')) // false

量词 

量词用来 设定某个模式出现的次数 

注意: 逗号左右两侧千万不要出现空格

    //  量词 * 类似 >=0 次console.log(/^哈$/.test('哈')) // trueconsole.log(/^哈*$/.test('')) // trueconsole.log(/^哈*$/.test('哈')) // trueconsole.log(/^哈*$/.test('哈哈')) // trueconsole.log(/^哈*$/.test('二哈很傻')) //  falseconsole.log(/^哈*$/.test('哈很傻')) //  falseconsole.log(/^哈*$/.test('哈很哈')) // falseconsole.log('------------------')//  量词 + 类似 >=1 次console.log(/^哈$/.test('哈')) // trueconsole.log(/^哈+$/.test('')) // falseconsole.log(/^哈+$/.test('哈')) // trueconsole.log(/^哈+$/.test('哈哈')) // trueconsole.log(/^哈+$/.test('二哈很傻')) //  falseconsole.log(/^哈+$/.test('哈很傻')) //  falseconsole.log(/^哈+$/.test('哈很哈')) // falseconsole.log('------------------')//  量词 ? 类似  0 || 1console.log(/^哈?$/.test('')) // trueconsole.log(/^哈?$/.test('哈')) // trueconsole.log(/^哈?$/.test('哈哈')) // trueconsole.log(/^哈?$/.test('二哈很傻')) //  falseconsole.log(/^哈?$/.test('哈很傻')) //  falseconsole.log(/^哈?$/.test('哈很哈')) // false// 量词 {n} 写几,就必须出现几次console.log(/^哈{4}$/.test('哈')) //  falseconsole.log(/^哈{4}$/.test('哈哈')) //  falseconsole.log(/^哈{4}$/.test('哈哈哈')) //  falseconsole.log(/^哈{4}$/.test('哈哈哈哈'))// trueconsole.log(/^哈{4}$/.test('哈哈哈哈哈')) //  falseconsole.log(/^哈{4}$/.test('哈哈哈哈哈哈')) //  falseconsole.log('------------------')// 量词 {n,}   >=nconsole.log(/^哈{4,}$/.test('哈'))//  falseconsole.log(/^哈{4,}$/.test('哈哈'))//  falseconsole.log(/^哈{4,}$/.test('哈哈哈'))//  falseconsole.log(/^哈{4,}$/.test('哈哈哈哈'))// trueconsole.log(/^哈{4,}$/.test('哈哈哈哈哈'))// trueconsole.log(/^哈{4,}$/.test('哈哈哈哈哈哈'))// trueconsole.log('------------------')

字符类:

[ ] 匹配字符集合
后面的字符串只要包含 abc 中任意 一个字符 ,都返回 true 。
    // 字符类   [abc]  只选1个console.log(/^[abc]$/.test('a'))  // trueconsole.log(/^[abc]$/.test('b'))  // trueconsole.log(/^[abc]$/.test('c'))  // trueconsole.log(/^[abc]$/.test('ab'))  // falseconsole.log(/^[abc]{2}$/.test('ab'))  // true

使用连字符 - 表示一个范围

比如:
     [a-z] 表示 a 到 z 26个英文字母都可以
     [a-zA-Z] 表示大小写都可以
     [0-9] 表示 0~9 的数字都可以
认识下:
    // 字符类   [a-z]  只选1个console.log(/^[A-Z]$/.test('p'))  // falseconsole.log(/^[A-Z]$/.test('P'))  // trueconsole.log(/^[0-9]$/.test(2))  // trueconsole.log(/^[a-zA-Z0-9]$/.test(2))  // trueconsole.log(/^[a-zA-Z0-9]$/.test('p'))  // trueconsole.log(/^[a-zA-Z0-9]$/.test('P'))  // true
[ ] 里面加上 ^ 取反符号
比如:
     [^a-z] 匹配除了小写字母以外的字符
     注意要写到中括号里面
. 匹配除换行符之外的任何单个字符

预定义:指的是 某些常见模式的简写方式。

修饰符

修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等

语法:

  i 是单词 ignore 的缩写,正则匹配时字母不区分大小写
  g 是单词 global 的缩写,匹配所有满足正则表达式的结果

替换 replace

语法:

    const str = 'java是一门编程语言, 学完JAVA工资很高'const re = str.replace(/java/ig, '前端')console.log(re)  // 前端是一门编程语言, 学完前端工资很高

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

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

相关文章

2023年实验班招生考试题解

比赛连接:传送门 密码:2023qsb A.Zlzs problem(Easy Version) 题目描述: This is the easy version of this problem. The only difference between the easy and hard versions is the constraints on n and m. So I wont even take a g…

ansible安装及rhel8仓库配置

目录 一、本地仓库 问题: 解决: 1.创建一个仓库: 内容: 2.挂载: 挂载: 测试: 3.或者直接使用阿里云的源 二.配置ansible仓库 1.下载: 2.检查 一、本地仓库 问题: 当…

P1049 [NOIP2001 普及组] 装箱问题(背包)(内附封面)

[NOIP2001 普及组] 装箱问题 题目描述 有一个箱子容量为 V V V,同时有 n n n 个物品,每个物品有一个体积。 现在从 n n n 个物品中,任取若干个装入箱内(也可以不取),使箱子的剩余空间最小。输出这个最…

App Cleaner Uninstaller for Mac 苹果电脑软件卸载工具

App Cleaner & Uninstaller 是一款非常有用的 Mac 应用程序清理和卸载工具。它可以彻底地清理系统中的应用程序、扩展和残留文件,以释放磁盘空间并优化系统性能。 此外,它还提供了磁盘空间监控和智能清理建议等功能,使用户可以轻松地管理…

[PyTorch][chapter 46][LSTM -1]

前言: 长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的。 目录: 背景简介 LSTM C…

【设计模式】-建造者模式

Java建造者模式:创建复杂对象的灵活构建者 在软件开发中,我们经常遇到需要创建一个复杂对象的情况。如果使用传统的构造函数进行对象创建,可能会导致构造函数参数过多,难以管理和维护。建造者模式(Builder Pattern&am…

QT以管理员身份运行

以下配置后,QT在QT Creator调试时,或者生成的.exe程序,都将会默认以管理员身份运行。 一、MSVC编译器 1、在Pro文件中添加以下代码: QMAKE_LFLAGS /MANIFESTUAC:\"level\requireAdministrator\ uiAccess\false\\" …

Power Switch与Tap Cell关系

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 常用的switch cell可以按照有没有阱偏置分类,一种是tapless,需要core内按一定间距规则摆放tap cell给switch cell衬底供电,另一种是switch cell自带tap阱偏置,cell设计的时候把衬底接到primary …

C#实现SqlServer数据库同步

实现效果: 设计思路: 1. 开启数据库及表的cdc,定时查询cdc表数据,封装sql语句(通过执行类型,主键;修改类型的cdc数据只取最后更新的记录),添加到离线数据表; 2. 线程定时查询离线数据表&#xf…

STM32单片机蓝牙APP宠物自动喂食器定时语音提醒喂食系统设计

实践制作DIY- GC00162---蓝牙APP宠物自动喂食器 一、功能说明: 基于STM32单片机设计---蓝牙APP宠物自动喂食器 二、功能说明: STM32F103C系列最小系统板LCD1602显示器DS1302时钟模块5个按键语音播报模块ULN2003步进电机模块LED灯板HC-05蓝牙模块&#x…

Netty:查看通过Channel发送数据返回的ChannelFuture的实现类

说明 使用Netty框架,通过io.netty.channel.Channel的writeAndFlush(Object msg)函数发送数据,返回了一个ChannelFuture。但这个ChannelFuture是个接口,那么返回的真正的实现类是什么?我们可以查看下。 示例 代码片段 package …

LeetCode 热题 100 JavaScript--206. 反转链表

/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} head* return {ListNode}*/1、逐个断键,将后一个节点放到前面 …