首页 > 其他分享 >12月29日正则对象

12月29日正则对象

时间:2024-01-01 15:11:07浏览次数:23  
标签:12 匹配 ceshi 29 zA egondsb 正则 字符串 console

目录

正则对象

首先是如何定义正则表达式

第一个中使用ReExp(正则表达式),它可以定义字符串的搜索模式。

基本格式

var zhengze1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");

这里的变量zhengze可以用于判断开头为大小字母的字符串,其它部分的可以是大小写的字母也可以是数字,同时也限制了长度为5至11之间

第二个定义正则表达式的方法是使用//来定义

基本格式

var zhengze2 =/^[a-zA-Z][a-zA-Z0-9]{5,11}$/;

这里的判断和定义方法一内的判断是一样的。

关键字test

该关键字用于测试字符串是否与正则表达式匹配。

基本使用

// 方式一
var zhengze1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
console.log(zhengze1.test('123'))//开头不是字母的情况
// 方式二
var zhengze2 =/^[a-zA-Z][a-zA-Z0-9]{5,11}$/;

console.log(zhengze2.test('json666'))//符合条件的情况

结果为:

false//zhengze1的判断结果
true//zhengze2的判断结果

基本格式

正则表达式是一个字符串,其中包含普通字符和特殊字符(元字符)。普通字符是字母和数字,表示他们自身。元字符具有特殊含义,表示一类字符或某种操作。

常见元字符:

常见元字符 描述
. 匹配任意单个字符(除了换行符)
^ 匹配字符串的开头
$ 匹配字符串的结尾
* 匹配前面的元素零次或多次
+ 匹配前面的元素一次或多次
? 匹配前面的元素零次或一次
[] 匹配括号内的任意一个字符
| 表示或(匹配两者之一)
() 用于分组,可以影响操作符的范围

示例:

例子 描述
^abc 匹配以abc开头的字符串
abc$ 匹配以abc结尾的字符串
a.b 匹配a、任意字符、b的字符串
a* 匹配零个或多个连续的a
a+ 匹配一次或多个连续的a
a? 匹配零次或一次a
[0-9] 匹配任意一个数字
(abc|def) 匹配abc或def
\d 匹配任意一个数字(等同于[0-9])

全局匹配

首先在全局匹配中用一个关键字match方法,,该方法的作用是在字符串中将匹配的结果存储在数组中返回。如果没有找到匹配项,返回值是null

例子如下

// 全局匹配
var s1 = 'egondsb dsb dsb';//用于匹配的字符串
console.log(s1.match(/s/));//匹配方法

结果为:

[ 's', index: 5, input: 'egondsb dsb dsb', groups: undefined ]

这里的index:5表示子串s在原字符串中起始索引位置是5。

但是该方法只是匹配了字符串中的一个s其它s没有被匹配,解决办法是使用修饰符g来表示全局匹配。

g是一个修饰符,表示全局匹配。使用全局匹配时,正则表达会查找字符串中所有匹配的子串,而不仅仅是第一个匹配。

例子如下:

var s1 = 'egondsb dsb dsb';//用于匹配的字符串
console.log(s1.match(/s/g));//这里会将s1内的子串s输出出来

结果为:

[ 's', 's', 's' ]

全局匹配中的特殊情况

当我在使用test来匹配时,采用全局匹配时会出现一些情况

具体如下

var ceshi = /^[a-zA-Z][a-zA-Z0-9]{5,11}$/g;
console.log(ceshi.test('egondsb'))//第一次匹配
console.log(ceshi.test('egondsb'))//第二次匹配

结果如下

同样的字符串为什么结果不一样,这就和修饰符g有所关系,同时和lastIndex属性有关系。

lastIndex属性是一个用于跟踪正则表达式匹配位置的重要属性,特别是在全局匹配的情况,它跟踪的匹配位置就是下一次匹配的条件。

这里提供解释

var ceshi = /^[a-zA-Z][a-zA-Z0-9]{5,11}$/g;
console.log(ceshi.test('egondsb'))
// 输出 true,因为 'egondsb' 符合正则表达式
console.log(ceshi.lastIndex)//这里将最后匹配的位置输出出来

console.log(ceshi.test('egondsb'))
// 输出 false,因为 'egondsb' 不再从开头符合正则表达式,上一次的匹配结束位置是 7('egonds' 的末尾)

结果如图

如何解决呢?最有效的就是重置一下就可以了

var ceshi = /^[a-zA-Z][a-zA-Z0-9]{5,11}$/g;
console.log(ceshi.test('egondsb'));
ceshi.lastIndex = 0;  // 重置 lastIndex
console.log(ceshi.test('egondsb'));

结果如图

标签:12,匹配,ceshi,29,zA,egondsb,正则,字符串,console
From: https://www.cnblogs.com/lzyzjb/p/17938706

相关文章

  • 无涯教程-Java 正则 - \s 匹配函数
    字符类\s与任何空格字符匹配。s-示例以下示例显示了预定义字符类匹配的用法。packagecom.learnfk;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPredefinedCharacterClassDemo{privatestaticfinalStringREGEX="\\s";......
  • 无涯教程-Java 正则 - \d 匹配函数
    字符类\d匹配从0到9的任何数字。d-示例以下示例显示了预定义字符类匹配的用法。packagecom.learnfk;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPredefinedCharacterClassDemo{privatestaticfinalStringREGEX="\\d";......
  • 无涯教程-Java 正则 - \D 匹配函数
    字符类\D与任何非数字匹配。D-示例以下示例显示了预定义字符类匹配的用法。packagecom.learnfk;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPredefinedCharacterClassDemo{privatestaticfinalStringREGEX="\\D";pr......
  • 前端学习笔记202311学习笔记第一百贰拾肆天-nodejs-登录鉴权-JWT鉴权之12
    ......
  • 无涯教程-Java 正则 - . 匹配函数
    "."与任何字符匹配。.-示例以下示例显示了预定义字符类匹配的用法。packagecom.learnfk;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPredefinedCharacterClassDemo{privatestaticfinalStringREGEX=".";privatesta......
  • macOS Monterey 12.6.6 (21G646) 正式版发布,ISO、IPSW、PKG 下载
    macOSMonterey12.6.6(21G646)正式版发布,ISO、IPSW、PKG下载本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。2023年5月18日(北京时间19日凌晨),App......
  • VMware Aria Operations 8.12 - 自动驾驶式 IT 运维管理
    VMwareAriaOperations8.12-自动驾驶式IT运维管理作者主页:sysin.org自动驾驶式IT运维管理VMwareAriaOperations(以前称为vRealizeOperations)借助统一运维平台,跨私有云、混合云和多云环境实现自动驾驶式IT运维管理,该平台通过AI/ML和预测性分析提供持续的性能、容量和......
  • VMware Aria Automation Orchestrator 8.12 - 现代工作流程自动化平台
    VMwareAriaAutomationOrchestrator8.12-现代工作流程自动化平台作者主页:sysin.org现代工作流程自动化平台VMwareAriaAutomationOrchestratorVMwareAriaAutomationOrchestrator(vRealizeOrchestrator)是一个现代工作流自动化平台,可简化和自动化复杂的数据中心基础架......
  • VMware Aria Operations for Logs 8.12 - 集中式日志管理
    VMwareAriaOperationsforLogs8.12-集中式日志管理作者主页:sysin.org集中式日志管理VMwareAriaOperationsforLogs(以前称为vRealizeLogInsight)通过集中式日志管理、深入了解运维和智能分析功能,大规模管理数据,以便跨私有云、混合云和多云环境进行故障排除和审核。大规模......
  • VMware Aria Suite Lifecycle 8.12 - 应用生命周期管理
    VMwareAriaSuiteLifecycle8.12-应用生命周期管理作者主页:sysin.org应用生命周期管理VMwareAriaSuiteLifecycle(以前称为vRealizeSuiteLifecycleManager)通过全面的应用生命周期和内容管理解决方案最大限度减少日常管理工作并提高终端用户的工作效率。全面的生命周期管理......