一、创建正则表达式
一共有两种方式:
1.直接量:var re = /[0-9]*/;
2.通过RegExp对象的构造函数:var re = RegExp("[0-9]*","i");
二、RegExp中正则表达式的属性与方法,以及String中常用的匹配字符串的方法
1.RegExp():构造函数,有两个参数,第一个参数是正则表达式,第二个参数是表示使用什么样的模式来匹配。第二个参数可以省略。
2.exec():一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。该方法有一个参数,表示要匹配的字符串
var re = RegExp("[0-9]{2}");//匹配两个数字 var regex = re.exec(1234567);//返回的是一个数据["12", index: 0, input: "1234567"]
3.test():一个在字符串中测试是否匹配的RegExp方法,它返回true或false。该方法有一个参数,表示要匹配的字符串
var re = new RegExp("[0-9]{2}"); var result = re.test(1234567);
以下是String中匹配字符串的方法
4.match():一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
var re = new RegExp("[0-9]{2}"); var result = "1234567".match(re);//结果["12"]
5.search():一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
var re = new RegExp("[0-9]{3}"); var result = "jack12314563".search(re);//结果 4
6.replace():一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
var re = new RegExp("([0-9]{3})"); var result = "jack123tom".replace(re,'数字');//jack数字tom
7.split():一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。
var re = new RegExp("([,,])"); var result = "jack,tom,superman,老王,老李".split(re);//["jack", ",", "tom", ",", "superman", ",", "老王", ",", "老李"] var result = "jack,tom,superman,老王,老李".split(re,3);//["jack", ",", "tom"]
三、使用模式来匹配字符串
在JS中有三种模式:
g:执行全局搜索,默认,在查找到匹配的情况下是停止查找的。如果使用g模式匹配的话,会找到所有的匹配。
var re = new RegExp("1([0-9]*?)3","g"); var result = "12314563".match(re);//结果 ["123", "14563"]
i:忽略大小写的匹配
var re = new RegExp("jack","i"); var result = re.exec("JACK TELL ME");//结果 ["JACK", index: 0, input: "JACK TELL ME"]
m:多行下的模式匹配,其中^表示行的开始,$表示行的结尾。
var re = new RegExp(".*jack$","m"); var result = re.exec("jack TELL ME\ntom TELL jack");//结果 ["tom TELL jack", index: 13, input: "jack TELL ME↵tom TELL jack"]
四、例子
//查找字符串中所有的邮箱
var re = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/gi;
var result = "tom@qq.com这是谁的邮箱,厦门:1234567@163.com,还有这个 google@gmail.com".match(re);
console.log(result);//["tom@qq.com", "1234567@163.com", "google@gmail.com"]
以上资源部分来源于:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions