当前位置: 首页 > news >正文

JavaWeb__正则表达式

目录

  • 1. 正则表达式简介
  • 2. 正则表达式体验
    • 2.1 验证
    • 2.2 匹配
    • 2.3 替换
    • 2.4 全文查找
    • 2.5 忽略大小写
    • 2.6 元字符使用
    • 2.7 字符集合的使用
    • 2.8 常用正则表达式

1. 正则表达式简介

正则表达式是描述字符模式的对象。正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

  • 语法
var patt=new RegExp(pattern,modifiers);
或者更简单的方式:
var patt=/pattern/modifiers; 
  • 修饰符
    在这里插入图片描述

  • 方括号
    在这里插入图片描述

  • 元字符
    在这里插入图片描述

  • 量词
    在这里插入图片描述

  • RegExp对象方法
    在这里插入图片描述

  • 支持正则的String的方法
    在这里插入图片描述

2. 正则表达式体验

2.1 验证

注意:这里是使用正则表达式对象来调用方法

// 创建一个最简单的正则表达式对象
var reg = /o/;
// 创建一个字符串对象作为目标字符串
var str = 'Hello World!';
// 调用正则表达式对象的test()方法验证目标字符串是否满足我们指定的这个模式,返回结果true
console.log("/o/.test('Hello World!')="+reg.test(str));

2.2 匹配

// 创建一个最简单的正则表达式对象
var reg = /o/;
// 创建一个字符串对象作为目标字符串
var str = 'Hello World!';
// 在目标字符串中查找匹配的字符,返回匹配结果组成的数组
var resultArr = str.match(reg);
// 数组长度为1
console.log("resultArr.length="+resultArr.length);// 数组内容是o
console.log("resultArr[0]="+resultArr[0]);

2.3 替换

注意:这里是使用字符串对象来调用方法。

// 创建一个最简单的正则表达式对象
var reg = /o/;
// 创建一个字符串对象作为目标字符串
var str = 'Hello World!';
var newStr = str.replace(reg,'@');
// 只有第一个o被替换了,说明我们这个正则表达式只能匹配第一个满足的字符串
console.log("str.replace(reg)="+newStr);//Hell@ World!// 原字符串并没有变化,只是返回了一个新字符串
console.log("str="+str);//str=Hello World!

2.4 全文查找

如果不使用g对正则表达式对象进行修饰,则使用正则表达式进行查找时,仅返回第一个匹配;使用g后,返回所有匹配。

// 目标字符串
var targetStr = 'Hello World!';// 没有使用全局匹配的正则表达式
var reg = /[A-Z]/;
// 获取全部匹配
var resultArr = targetStr.match(reg);
// 数组长度为1
console.log("resultArr.length="+resultArr.length);
// 遍历数组,发现只能得到'H'
for(var i = 0; i < resultArr.length; i++){console.log("resultArr["+i+"]="+resultArr[i]);
}

对比

// 目标字符串
var targetStr = 'Hello World!';
// 使用了全局匹配的正则表达式
var reg = /[A-Z]/g;
// 获取全部匹配
var resultArr = targetStr.match(reg);
// 数组长度为2
console.log("resultArr.length="+resultArr.length);
// 遍历数组,发现可以获取到“H”和“W”
for(var i = 0; i < resultArr.length; i++){console.log("resultArr["+i+"]="+resultArr[i]);
}

2.5 忽略大小写

//目标字符串
var targetStr = 'Hello WORLD!';//没有使用忽略大小写的正则表达式
var reg = /o/g;
//获取全部匹配
var resultArr = targetStr.match(reg);
//数组长度为1
console.log("resultArr.length="+resultArr.length);
//遍历数组,仅得到'o'
for(var i = 0; i < resultArr.length; i++){console.log("resultArr["+i+"]="+resultArr[i]);
}

对比

//目标字符串
var targetStr = 'Hello WORLD!';
//使用了忽略大小写的正则表达式
var reg = /o/gi;
//获取全部匹配
var resultArr = targetStr.match(reg);
//数组长度为2
console.log("resultArr.length="+resultArr.length);
//遍历数组,得到'o'和'O'
for(var i = 0; i < resultArr.length; i++){console.log("resultArr["+i+"]="+resultArr[i]);
}

2.6 元字符使用

var str01 = 'I love Java';
var str02 = 'Java love me';
// 匹配以Java开头
var reg = /^Java/g;
console.log('reg.test(str01)='+reg.test(str01)); // false
console.log("<br />");
console.log('reg.test(str02)='+reg.test(str02)); // true
var str01 = 'I love Java';
var str02 = 'Java love me';
// 匹配以Java结尾
var reg = /Java$/g;
console.log('reg.test(str01)='+reg.test(str01)); // true
console.log("<br />");
console.log('reg.test(str02)='+reg.test(str02)); // false

2.7 字符集合的使用

//n位数字的正则
var targetStr="123456789";
var reg=/^[0-9]{0,}$/;
//或者 : var reg=/^\d*$/;
var b = reg.test(targetStr);//true
//数字+字母+下划线,6-16位
var targetStr="HelloWorld";
var reg=/^[a-z0-9A-Z_]{6,16}$/;
var b = reg.test(targetStr);//true

2.8 常用正则表达式

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 27. 738.单调递增的数字,968.监控二叉树,贪心算法总结
  • 访问控制列表
  • linux 常用和不那么常用命令记录02 磁盘占用
  • 开源项目的机遇与挑战
  • 设计分享—国外后台界面设计赏析
  • 视频号的视频,一键就下载了,方法全在这儿了!
  • STM32智能无人机控制系统教程
  • 【D3.js in Action 3 精译】D3 入门基础之 Node、JavaScript 框架与 Observable 记事本
  • stm32基本定时器
  • 认证和授权类漏洞挖掘指南
  • uniapp 封装瀑布流组件
  • H5与小程序:两者有何不同?
  • 【Java 注解,自定义注解,元注解,注解本质,注解解析】
  • STM32(一):安装环境
  • MySQL创建新用户并赋予指定数据库权限
  • 时间复杂度分析经典问题——最大子序列和
  • 2017年终总结、随想
  • DOM的那些事
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Javascript设计模式学习之Observer(观察者)模式
  • laravel5.5 视图共享数据
  • Mithril.js 入门介绍
  • MySQL几个简单SQL的优化
  • nfs客户端进程变D,延伸linux的lock
  • PHP那些事儿
  • ReactNativeweexDeviceOne对比
  • vagrant 添加本地 box 安装 laravel homestead
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 初探 Vue 生命周期和钩子函数
  • 什么软件可以剪辑音乐?
  • 详解移动APP与web APP的区别
  • 用Python写一份独特的元宵节祝福
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $nextTick的使用场景介绍
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (PADS学习)第二章:原理图绘制 第一部分
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (黑马C++)L06 重载与继承
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Linux整合apache和tomcat构建Web服务器
  • .chm格式文件如何阅读
  • .naturalWidth 和naturalHeight属性,
  • .net wcf memory gates checking failed
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .netcore 获取appsettings
  • .net项目IIS、VS 附加进程调试