RegExp对象(正则表达式)

2019-12-24  本文已影响0人  混吃等死小前端

基础用法

\d:可以匹配一个数字
\w:可以匹配一个字母或数字
\s:可以匹配一个空格(也包括Tab等空白符)
.:可以匹配任意字符
*:表示任意个字符(包括0个)
+:表示至少一个字符
?:表示0个或1个字符
{n}:表示n个字符
{n,m}:表示n-m个字符
g : 全局匹配;var r1 = /test/g;
i:表示忽略大小写
m:表示执行多行匹配

进阶(更精确匹配)

[]:表示范围,无关顺序
A|B:可以匹配A或B
^:表示行的开头
^\d:表示必须以数字开头
**:表示行的结束 **\d:表示必须以数字结束

[0-9a-zA-Z\_]+ //比如'a100','0_Z','js2015'等等

1、判断正则表达式是否匹配test()

var re = /^\d{3}\-\d{3,8}$/;
re.test('010-12345'); // true
re.test('010-1234x'); // false
re.test('010 12345'); // false

2、提取子串exec()
用()表示的就是要提取的分组(Group)

var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null

//exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。
//exec()方法在匹配失败时返回null。

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符

3、上次匹配到的最后索引 lastIndex

var s = 'JavaScript, VBScript, JScript and ECMAScript';
var re=/[a-zA-Z]+Script/g;

// 使用全局匹配:
re.exec(s); // ['JavaScript']
re.lastIndex; // 10

re.exec(s); // ['VBScript']
re.lastIndex; // 20

re.exec(s); // ['JScript']
re.lastIndex; // 29

re.exec(s); // ['ECMAScript']
re.lastIndex; // 44

re.exec(s); // null,直到结束仍没有匹配到
上一篇下一篇

猜你喜欢

热点阅读