正则表达式(JavaScript)

基本字符类型
原义文本字符:代表字面本义
元字符:有特殊含义的非字符字符(* + ? $等)
字符类
字符类指的是符合某些特性的对象,一个泛指,用[]来标识。如[abc]指a或b或c。
字符类取反:使用元字符^创建反向类/负向类,标识不属于某类的内容。如[^abc]指不是字符a或b或c。
范围类
如[a-zA-Z]
预定义类

字符等价含义
.[^\r\n]除了回车符和换行符之外的所有字符
\d[0-9]数字字符
\D[^0-9]非数字字符
\s[\t\n\x0B\f\r]空白符
\S[^\t\n\x0B\f\r]非空白符
\w[a-zA-Z_o-9]单词字符(数字、字母、下划线)
\W[^a-zA-Z_o-9]非单词字符
^以XXX开始
$以XXX结束
\b单词边界
\B非单词边界
?出现0次或一次
+出现一次或多次
*出现0次或多次
{n}出现n次
{n,m}出现n到m次
{n,}至少出现n次

贪婪模式
/a{3,6}/ 默认会匹配6次。非贪婪模式只要在量词后加?即可,/a{3,6}?/ 只匹配3次
分组
使用()可以达到分组的功能。如/a(bc)/
使用|可以达到或的效果(把前后的正则表达式)。abc|def 表示abc或者def,ab(c|d)ef表示abcef或者abder。
分组的捕获:/(abc)d(efg)/ 1=abc, 2 = efg
忽略分组的捕获:/(?:abc)d(efg)/ $1 = efg
前瞻与后顾
文本尾方向为前
前瞻:正则表达式匹配到规则的时候,向前检查是否符合断言。
后顾:正则表达式匹配到规则的时候,向后检查是否符合断言。(js不支持)

名称规则例子
正向前瞻exp(?=assert)如\w(?=\d) 匹配到字符然后再判断字符后是否为数字
负向前瞻exp(?!assert)如\w(?!\d) 匹配到字符然后再判断字符后是否为数字
正向后顾exp(?<=asseert)js不支持
负向后顾exp(?js不支持

方法
test()方法:

let reg1 = /\w/
let reg2 = /\w/g     //全局匹配
let result = reg1.test('ab') //结果为true或false  全局匹配需要注意lastIndex的变化 

exec()方法:
使用正则表达式对字符串进行搜索,并将更新全局RegExp对象的属性以反映匹配结果。没有匹配结果返回null,否则返回一个结果数组。
非全局调用—返回的数组中第一个元素是与正则表达式相匹配的文本,第二个元素是与RegExp的第一个子表达式相匹配的文本(如果存在),第三个元素是与RegExp的第二个子表达式相匹配的文本(如果存在),类推

let reg = /\d(\w)\d/
let str = '1a2b3c4aaaaaaa'
let result = reg.exec(str)
/*************结果分析**************/
reg.lastIndex = 0 // 非全局调用 lastIndex不起作用
result.index = 0 // 第一个匹配的字符偏移量
result = ['1a2','a']

全局调用
String方法
search():
用于检索字符串中指定的字符串,或者检索与正则表达式相匹配的子字符串,返回第一个匹配结果的index, 不存在返回 -1。它不执行全局匹配,会忽略g标志,并总是从字符串开始的位置进行搜索。
match():
可以检测到一个或多个与regexp匹配的文本,是否有g标志对结果影响非常的大。
非全局调用,只能在字符串中执行一次匹配。如果没有匹配到任何文本则返回null,否则返回一个数组,存放匹配到的文本信息,与exec非全局调用返回的信息一致。
全局调用,返回的数组中存放所有的匹配子串,没有index和input属性

let reg = /\d(\w)\d/g
let ts = '$1a2b3c4d5e'
let result = ts.match(reg) //result的值是['1a2','3c4']

split():

let ts = 'a,b,c'
ts.split(',') <=> ts.split(/,/)

let ts2 = 'a1b2c3d'
ts2.split(/\d/) 

replace():

在线地址
工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值