JS实现正则表达式

一、创建正则表达式

   一共有两种方式:

      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"]
exec()

  3.test():一个在字符串中测试是否匹配的RegExp方法,它返回true或false。该方法有一个参数,表示要匹配的字符串

var re = new RegExp("[0-9]{2}");
var result = re.test(1234567);
test()

  以下是String中匹配字符串的方法  

  4.match():一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。  

var re = new RegExp("[0-9]{2}");
var result = "1234567".match(re);//结果["12"]
match()

  5.search():一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。

var re = new RegExp("[0-9]{3}");
var result = "jack12314563".search(re);//结果  4
search()

  6.replace():一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。

var re = new RegExp("([0-9]{3})");
var result = "jack123tom".replace(re,'数字');//jack数字tom
replace()

  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"]
View Code

 

三、使用模式来匹配字符串

  在JS中有三种模式:

  g:执行全局搜索,默认,在查找到匹配的情况下是停止查找的。如果使用g模式匹配的话,会找到所有的匹配。

var re = new RegExp("1([0-9]*?)3","g");
var result = "12314563".match(re);//结果 ["123", "14563"]
g模式下的匹配

  i:忽略大小写的匹配

var re = new RegExp("jack","i");
var result = re.exec("JACK TELL ME");//结果  ["JACK", index: 0, input: "JACK TELL ME"]
i模式下的匹配

  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"]
m模式下的匹配

  

四、例子

//查找字符串中所有的邮箱

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

 

posted on 2017-02-22 19:56  AlvinNiu  阅读(917)  评论(2编辑  收藏  举报

导航