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

正则表达式(补充)

定义一个正则表达式

const 变量名 = /表达式/

const reg = /前端/  

匹配看字符串中有无前端俩字

正则对象上的一些方法

test()

用于查看正则表达式与指定的字符串是否匹配

const reg = /前端/

const res = reg.test('学前端,找黑马')

//匹配到返回true,匹配不到返回false

console.log(res)

exec()

查找符合规则的字符串

const reg = /前端/

const res = reg.exec('学前端,找黑马')

console.log(res)

replace()

用于替换字符串中符合规则的字符

const reg = /前端/

const str='学前端,找黑马'

const res = str.replace(reg,'java')

console.log(res)

match()

在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

const reg = /前端/

const str='学前端,找黑马,前端就业前景好,前端工资高'

const res = str.match(reg)

console.log(res)

修饰符

i忽略大小写
g全局匹配

const reg = /a/i

console.log(reg.test('a'))//true

console.log(reg.test('ABC'))//true

const reg = /前端/g

const str='学前端,找黑马,前端就业前景好,前端工资高'

const res = str.replace(reg,'java')

console.log(res)

const reg = /前端/g

const str='学前端,找黑马,前端就业前景好,前端工资高'

const res = str.match(reg)

console.log(res)

元字符 

边界符
单词边界 \b

const reg = /cat/g

const str = 'The cat scattered his food all over the room'

console.log(str.replace(reg,'dog'))

const reg = /\bcat\b/

const str = 'The cat scattered his food all over the room'

console.log(str.replace(regzi,'dog'))

字符串边界 ^ $

^:以...开头

$:以...结尾

const reg = /^a/

console.log(reg.test('apple')) //true

const reg = /c$/

console.log(reg.test('abc')) //true

^ $ :在一块,表示必须是精确匹配 

const reg = /^a$/   

中间写什么就只能匹配什么

console.log(reg.test('a')) //true

console.log(reg.test('aaa')) //false

console.log(reg.test('abca')) //false

量词

*:表示0次或更多次

const reg = /^a*$/

console.log(reg.test('a')) //true

console.log(reg.test('')) //true

console.log(reg.test('aaa')) //true

 +:表示1次或更多次

const reg = /^a+$/

console.log(reg.test('a')) //true

console.log(reg.test('')) //false

console.log(reg.test('aaa')) //true

?:表示0次或1次

const reg = /^a+$/

console.log(reg.test('a')) //true

console.log(reg.test('')) //true

console.log(reg.test('aaa')) //false

console.log(reg.test('b')) //false

{n}:只能有n次 

const reg = /^a{3}$/

console.log(reg.test('a')) //false

console.log(reg.test('')) //false

console.log(reg.test('aaa')) //true

{n,}:表示大于等于n次

const reg = /^a{2,}$/

console.log(reg.test('a')) //false

console.log(reg.test('')) //false

console.log(reg.test('aaa')) //true

console.log(reg.test('aa')) //true

{n,m}:n-m次

const reg = /^a{2,4}$/

console.log(reg.test('a')) //false

console.log(reg.test('')) //false

console.log(reg.test('aaa')) //true

console.log(reg.test('aa')) //true

字符类

[]:匹配字符集合

/[abc]/:匹配abc中的任意一个

连字符-

/[a-z]/:匹配a到z的26个字母中的任意一个

/[a-zA-Z]/:匹配26个英文字母,不区分大小写

^表示取反(需要写在[]里面)

/[^abc]/:匹配abc之外的任意一个

const reg = /[^0-9]/

console.log(reg.test('aaa111')) //true 能匹配到0-9之外的任意一个字符

.:匹配除换行符之外的任意一个字符

const reg =/./

console.log(reg.test(''));//true

console.log(reg.test('\n'));//false

console.log(reg.test('\r'));//false

预定义:

\d:匹配0-9之间任意一个数字字符;相当于[0-9]

/[0-9]/ <=> /\d/

\D:匹配任意一个非0-9数字的字符;相当于[^0-9]

\s:匹配任意一个空白字符,包括 空格、tab、换行符等;相当于[\t\r\n\v\f]

\S:匹配任意一个非空白字符;相当于[^\t\r\n\v\f]

\w:匹配任意的字母、数字、下划线;相当于[a-zA-Z0-9_]

\W:匹配除字母,数字和下划线以外的字符;相当于[^a-zA-Z0-9_]

分组和分支结构

分组

/ab+/    ab abbbbbbb

/(ab)+/    ab abababab

匹配有一个或多个ab连一块儿的;其中的()提供分组的功能

分组捕获

将YYYY-MM-DD格式的日期替换成MM/DD/YYYY(月日年),。

const reg = /^\d{4}-\d{2}-\d{2}$/

精确匹配;\d<=>[0-9];{4}4位数字

const reg = /^\d{4}-\d{2}-\d{2}$/

const date = '2023-01-05'

console.log(reg.test(date))//true

YYYY-MM-DD的匹配模式为/\d{4}-\d{2}-\d{2}/,它是将整个日期作为一个组(group)匹配起来,我们把这样的叫Group0

如果我们加上括号/(\d{4})-(\d{2})-(\d{2})/,那么分组就是下面的情况:

YYYY-MM-DD  Group0

YYYY   Group1

MM      Group2

DD       Group3

我们通过$符获取每个分组匹配的内容;eg.$1代表YYYY,$2代表MM ... 

const reg = /^(\d{4})-(\d{2})-(\d{2})$/

const date = '2023-01-05'

console.log(date.replace(reg,'$2/$3/$1'))            //01/05/2023

分支结构

| :表示匹配规则1或规则2

const reg = /(java)|(前端)/;

const str1 ="学前端,来黑马"

const str2 = "学java,也可以来黑马"

reg.test(str1)//true

reg.test(str2)//true


http://www.mrgr.cn/news/76376.html

相关文章:

  • HTMLHTML5革命:构建现代网页的终极指南 - 0. 课程目录设计
  • vue elemnt-ui自定义时间日期选择
  • C语言gdb调试
  • 【Leetcode-移动零】利用将非零元素移动至数组前解决移动零问题(剪枝优化)
  • 力扣-数据结构-19【算法学习day.90】
  • [Unity]发包前遇到的坑之GridLayoutGroup
  • vue3: ref, reactive, readonly, shallowReactive
  • uniapp: 微信小程序包体积超过2M的优化方法
  • Vue和Vue-Element-Admin(十三):基于vue2比较学习vue3
  • 【AIGC】如何通过ChatGPT提示词Prompt定制个性学习计划
  • vue3: toRef, reactive, toRefs, toRaw
  • linux下编译安装memcached
  • Android ART知多少?
  • 《抽象类和接口》
  • 渗透测试之信息收集 DNS主机发现探测方式NetBIOS 协议发现主机 以及相关PorCheck scanline工具的使用哟
  • 跳房子(弱化版)
  • 芯原科技嵌入式面试题及参考答案
  • cMake编译github中源码
  • flink cdc 应用
  • 重建大师跑空三,出现进度条回退是什么原因?
  • 城市轨道交通数据可视化的应用与优势
  • Intelligent Transportation Scheduling
  • IT框架与库:理解它们的不同与共同点
  • 用友YonBIP-R5旗舰版 yonbiplogin 任意文件读取漏洞复现
  • Rust 语言学习笔记(一)
  • uniapp luch-request 使用教程+响应对象创建