愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

Javascript学习总结——正则表达式

1、声明一个正则表达式,有两种方法:

var validVarName = /[A-Za-z\_\$][A-Za-z0-9\_\$]*/;
var anotherVarNameExp = new RegExp('[A-Za-z\_\$][A-Za-z0-9\_\$]*'); 

2、正则表达式测试字符串,相当于PHP中的preg_match():

exp.test(stringToTest);

3、正则表达式切分字符串,相当于PHP中的preg_split():

stringToSplit.split(regExp);

4、正则表达式提取分组,使用exec,如:

var email = /([0-9A-Za-z\.\-\_]+)@([A-Za-z0-9\-]+\.[A-Za-z]+)/;
email.exec("rf126@qq.com"); // 返回["rf126@qq.com", "rf126", "qq.com"];

当匹配成功的时候,会按分组顺序返回一个Array,保存有提取的各分组字符串(分组是用括号包裹起来的),Array的第0项则是待匹配的串。当匹配失败的时候,返回null
5、js默认是贪婪匹配的,如果要实现非贪婪匹配,则加个 ? 即可,表示会尽可能少地匹配
6、匹配标识符,有g表示全局匹配,i表示忽略大小写,m表示多行匹配。在使用g标识符的时候,执行exec后会自动更新lastIndex,表示最新匹配的索引,如:

var string = "Javascript, VBscript, ECMAScript";
var rule = /[A-Za-z]+?script/gi;
rule.exec(string); // ["Javascript"]
rule.lastIndex;   // 10

rule.exec(string); // ["VBscript"]
rule.lastIndex;   // 20

rule.exec(string);  // ["ECMAScript"]
rule.exec(string);  // null