JavaWeb__正则表达式

目录

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

1. 正则表达式简介

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

  • 语法
javascript 复制代码
var patt=new RegExp(pattern,modifiers);
或者更简单的方式:
var patt=/pattern/modifiers; 
  • 修饰符

  • 方括号

  • 元字符

  • 量词

  • RegExp对象方法

  • 支持正则的String的方法

2. 正则表达式体验

2.1 验证

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

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

2.2 匹配

javascript 复制代码
// 创建一个最简单的正则表达式对象
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 替换

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

javascript 复制代码
// 创建一个最简单的正则表达式对象
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后,返回所有匹配。

javascript 复制代码
// 目标字符串
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]);
}

对比

javascript 复制代码
// 目标字符串
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 忽略大小写

javascript 复制代码
//目标字符串
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]);
}

对比

javascript 复制代码
//目标字符串
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 元字符使用

javascript 复制代码
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
javascript 复制代码
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 字符集合的使用

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

2.8 常用正则表达式

相关推荐
__松子3 分钟前
TS项目中如何合理的为接口定义参数类型
前端·javascript·typescript·ts
Front思5 分钟前
element plus e-table表格中使用多选,当翻页时已选中的数据丢失
前端·javascript·elementui
希冀1236 分钟前
【JavaScript】Javascript基础Day03:数组
开发语言·javascript·ecmascript
Hero_rong9 分钟前
vuefor循环动态展示图片不显示
java·前端·javascript
GISer_Jing31 分钟前
React Componet类组件详解(老项目)
前端·javascript·react.js
JiaJunRun32 分钟前
React 进阶阶段学习计划
前端·javascript·学习·react.js
架构师ZYL2 小时前
python之数据结构与算法(数据结构篇)-- 字典
开发语言·javascript·python·css3·html5·数据结构与算法
子非鱼9212 小时前
【JavaScript】LeetCode:81-85
开发语言·javascript·leetcode
RumbleWx3 小时前
require和import的区别
javascript·node.js
T0uken3 小时前
【Flutter】状态管理:高级状态管理 (Riverpod, BLoC)
前端·javascript·flutter