零基础入门JavaWeb——正则表达式
创始人
2024-03-16 04:37:07
0

一、概述

正则表达式是对字符串操作的一种逻辑公示,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

二、正则表达式的用途

正则表达式有三个主要用途:

  • 模式验证:检测某个字符串是否符合规则,例如检测手机号、身份证号等等是否符合规范
  • 匹配读取:将目标字符串中满足规则的部分读取出来,例如将整段文本中的邮箱地址读取出来。
  • 匹配替换:将目标字符串中满足标准的部分替换为其他字符串,例如将整段文本中的“hello”替换成“haha”。

三、正则表达式的语法

3.1 创建正则表达式对象

对象形式:var reg = new RegExp("正则表达式") 当正则表达式中有"/"时使用这种形式。
直接量形式:var reg = /正则表达式/ 一般使用这种声明方式

3.2 正则表达式入门



正则表达式的入门





3.3 正则表达式的匹配模式

3.3.1 全文查找

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

    // 匹配读取:读取一个字符串中的第一个'l'字母// g表示全文查找,如果不使用g就只能查找到第一个匹配的内容// 1. 编写一个正则表达式var reg2 = /l/g// 2. 使用正则表达式读取字符串var array = str.match(reg2)console.log(array.length)

3.3.2 忽略大小写

    // 匹配读取:读取一个字符串中的第一个'l'字母// i表示ignore忽略大小写,如果不使用i就表示精确区分大小写,加了i就不区分大小写// 1. 编写一个正则表达式var reg2 = /l/i// 2. 使用正则表达式读取字符串var array = str.match(reg2)console.log(array.length)

3.3.3 模糊匹配和精确匹配



精确匹配和模糊匹配





3.3.4 多行查找

不使用多行查找模式,目标字符串中不管有没有换行符都会被当做一行。



多行查找





3.4 元字符

在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使用。如果要匹配元字符本身,需要对元字符进行转义,转义的方式是在元字符前面加上“\”。

3.4.1 常用的元字符

代码说明
.匹配除换行字符以外的任意字符。
\w匹配字母或数字或下划线等价于[a-zA-Z0-9_]
\W匹配任何非单词字符。等价于[^a-zA-Z0-9_]
\s匹配任意的空白符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]
\S匹配任何非空白字符。等价于[^\f\n\r\t\v]
\d匹配数字。等价于[0-9]
\D匹配一个非数字字符。等价于[^0-9]
\b匹配单词的开始或结束
^匹配字符串的开始,但在[]中使用表示取反
$匹配字符串的结束

3.4.2 示例



练习





3.5 字符集合

语法格式示例说明
[字符列表][abc]目标字符串中任何一个字符出现在字符列表中就算匹配成功。
[^字符列表][^abc]匹配字符列表中未包含的任意字符。
[字符范围][a-z]匹配指定范围内的任意字符。
var str01 = 'Hello World';
var str02 = 'I am Tom';
//匹配abc中的任何一个
var reg = /[abc]/g;
console.log('reg.test(str01)='+reg.test(str01));
console.log('reg.test(str02)='+reg.test(str02));

3.6 出现次数

代码说明
*出现零次或多次
+出现一次或多次
?出现零次或一次
{n}出现n次
{n,}出现n次或多次
{n,m}出现n到m次
console.log("/[q]{3}/.test('qq')="+/[q]{3}/g.test('qq')); // flase
console.log("/[q]{3}/.test('qqq')="+/[q]{3}/g.test('qqq')); // true
console.log("/[q]{3}/.test('qqqq')="+/[q]{3}/g.test('qqqq')); // true

3.7 在正则表达式中表达“或”

使用符号:“|”

// 目标字符串
var str01 = 'Hello World!';
var str02 = 'I love Java';
// 匹配'World'或'Java'
var reg = /World|Java/g;
console.log("str01.match(reg)[0]="+str01.match(reg)[0]);
console.log("str02.match(reg)[0]="+str02.match(reg)[0]);

3.8 常用正则表达式

需求正则表达式
用户名/^\[a-zA-Z\_][a-zA-Z_\-0-9]{5,9}$/
密码/^[a-zA-Z0-9_\-\@\#\&\*]{6,12}$/
前后空格/^\s+|\s+$/g
电子邮箱/^[a-zA-Z0-9_\.-]+@([a-zA-Z0-9-]+[\.]{1})+[a-zA-Z]+$/

学海无涯苦作舟

相关内容

热门资讯

央行最新发布,跨国公司迎政策利... 跨国公司跨境资金管理便利化迈出新步伐。 12月26日,中国人民银行、国家外汇管理局联合发布关于跨国公...
汉马科技(600375)披露公... 截至2025年12月26日收盘,汉马科技(600375)报收于5.87元,较前一交易日下跌3.93%...
吉利旗下威睿公司起诉欣旺达动力... IT之家 12 月 26 日消息,欣旺达电子股份有限公司今日发布公告,公司的子公司欣旺达动力于 20...
网购“10-9”枚卤蛋实得1枚... 极目新闻记者 张皓 河南一名大学生日前发视频称,他网购卤蛋时,商品页面标注的是“10-9枚”,他支付...
文投控股:因与索宝公司合同纠纷... 观点网讯:12月25日,文投控股公告披露,公司因与索宝(北京)国际影业投资有限公司的合同纠纷被诉,涉...
江西上高县泗溪镇创新推进基层政... 近日,在江西省宜春市上高县泗溪镇便农贸市场,一场特殊的宣讲活动正在热闹进行。“泗溪乡音宣讲队”的成员...
欣旺达子公司面临23.14亿元... 12月26日,欣旺达(300207)发布公告,公司的子公司欣旺达动力科技股份有限公司因买卖合同纠纷被...
央行报告:金融系统将实施更加积... 中国人民银行12月26日消息,近日中国人民银行发布的《中国金融稳定报告(2025)》提出,展望未来,...
亿晶光电(600537)披露累... 截至2025年12月26日收盘,亿晶光电(600537)报收于4.33元,较前一交易日上涨9.9%,...
ST德豪:董事会成员构成符合法... 证券之星消息,ST德豪(002005)12月25日在投资者关系平台上答复投资者关心的问题。 投资者提...