正则表达式基础

先上文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions;

正则历史:维基百科;

接下来由很浅入浅来分类学习正则基础:

元字符

常用元字符含义
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线
\W匹配不是字母、数字、下划线的字符
\d匹配数字,相当于[0-9]
\D匹配不是数字的字符
\s匹配任意不可见的字符,包括空格、制表符、换行符等
\S匹配任意可见字符
^匹配字符串开始位置
$匹配字符串结束位置
\转义字符. 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。相反,反斜杠也可以将其后的特殊字符,转义为字面量。

量词

常用量词含义
*重复任意次, 相当于{0,}
?重复0次或者1次, 相当于{0, 1}
+重复1次或者更多次,相当于{1,}
{n}重复n次
{n,}重复n次或者大于n次
{n, m}重复n到m次

分支&字符集

常用字符含义
xy
[abc]一个字符集合, 匹配方括号的中任意字符. [abc] == [a-c]
[^abc]一个反向字符集, 匹配任何没有包含在方括号中的字符. [^abc] == [^a-c]

零宽断言 (lookaround assertions)

  • 也翻译成环视
  • 根据方向的不同,分为lookahead和lookbehind
  • 根据判断原则,分为肯定和否定。
正向/预测现行/顺序
从左到右/pattern的前面位置
负向/回顾后发/逆序
从右到左/pattern的后面位置
肯定/正(?=pattern)(?<=pattern)
否定/负(?!pattern)(?<!pattern)

惰性&贪婪

  • 贪婪模式——在匹配成功的前提下,尽可能多的去匹配
  • 惰性模式——在匹配成功的前提下,尽可能少的去匹配
  • /.*bbb/g.test('abbbaabbbaaabbb1234')
  • /.*?bbb/g.test('abbbaabbbaaabbb1234')
  • 贪婪模式⽤用于匹配优先量量词修饰的⼦子表达式
  • 惰性模式⽤用于匹配忽略略优先量量词修饰⼦子表达式

修饰符&标志

标志描述
g → global全局搜索
i → ignoreCase不区分大小写搜索
m → multiline多行搜索
y → sticky执行“粘性”搜索,匹配从目标字符串的当前位置开始
u → unicode表示按unicode(utf-8)匹配(主要针对汉字)
s → dotAll将字符串视为单行来匹配

使用方法

方法描述
exec一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。
test一个在字符串中测试是否匹配的RegExp方法,它返回true或false。
match一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
search一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
replace一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
split一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。

例:

var myRe = /d(b+)d/g;
var myArray = myRe.exec("cdbbdbsbz");
var myRe = /d(b+)d/g;
var myArray = myRe.test("cdbbdbsbz");
var re = /\w+\s/g;
var str = "fee fi fo fum";
var myArray = str.match(re);
var re = /\w+\s/g;
var str = "fee fi fo fum";
var myArray = str.match(re);
console.log(myArray);  // ["fee ", "fi ", "fo "]
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
console.log(newstr);   //  "Smith, John"
var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
var pattern = /\s*;\s*/;
var nameList = names.split(pattern);

转载于:https://www.cnblogs.com/arissy/p/10046284.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值