先上文档: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次 |
分支&字符集
| 常用字符 |
含义 |
| x |
y |
| [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://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions;
正则历史:维基百科;
接下来由很浅入浅来分类学习正则基础:
元字符
量词
分支&字符集
零宽断言 (lookaround assertions)
从左到右/pattern的前面位置
从右到左/pattern的后面位置
惰性&贪婪
修饰符&标志
使用方法
例: