一、创建正则表达式

   一共有两种方式:

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

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

  在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

JS实现正则表达式的更多相关文章

  1. js常用正则表达式2

    字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对 ...

  2. js之正则表达式(上)

    1.正则表达式的创建方式 两种方式创建:通过new修饰符创建和字面量的方式创建 1>new修饰符方式创建 var b2=new RegExp('Box','ig'); //第二个参数是 模式字符 ...

  3. Js用正则表达式验证字符串

    js 常用正则表达式表单验证代码 作者: 字体:[增加 减小] 类型:转载 js 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...

  4. AngularJS进阶(十三)JS利用正则表达式校验手机号

    JS利用正则表达式校验手机号 注:请点击此处进行充电! 绪 由于项目需求,需要在前端实现手机号码的校验.当然了,对于基本的格式校验应该放在客户端进行,而不需要再将待校验的手机号发送至服务端,在服务端完 ...

  5. JS常用正则表达式备忘录

    摘要: 玩转正则表达式. 原文:JS常用正则表达式备忘录 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 正则表达式或"regex"用于匹配字符串的各个部分 下面是 ...

  6. JS的正则表达式及回文

    function palindrome(str) { str = str.replace(/\s/g,"").replace(/[^a-zA-Z0-9]/g,"" ...

  7. JS的正则表达式简介

    1.JS的正则表达式 1.1 简介 JS的正则表达式比较简单,总体上只分为两个功能:一个是test——用于匹配字符串是否符合规定的正则表达式规则:另外一个是exec——用于获取匹配到的数据. 1.2 ...

  8. Js与正则表达式

    原本接着上面的章节,这一章节应该是写 Jquery事件的,由工作需要,暂时横插一篇正则表达式的学习,这里是边学边记录,错误之处,希望指正,提拔一二,不甚感激! 此章节有 1.1 正则表达式的定义 1. ...

  9. JS 利用正则表达式替换字符串

    JS 利用正则表达式替换字符串 博客分类: JavaScript 学习资料 Java代码 收藏代码 JS 利用正则表达式替换字符串 var data = "123123,213,12312, ...

  10. js常用正则表达式,滚蛋吧!你们测试组bug,让你挑

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

随机推荐

  1. struts2的package和result的标签的属性

    package的属性 1.name: 配置package元素时必须指定name属性,这是引用该包的唯一标识. 2.extends: 可选属性,指定该包继承的父包,子包可以从一个或多个父包中继承到拦截器 ...

  2. jquery选择器中的find和空格,children和>的区别、及父节点兄弟节点,还有判断是否存在的写法

     一.find和空格,children和>及其它的区别   空格:$('parent childchild')表示获取parent下的所有的childchild节点(所有的子孙). 等效成  = ...

  3. HDU 5862 Counting Intersections (离散化+扫描线+树状数组)

    题意:给你若干个平行于坐标轴的,长度大于0的线段,且任意两个线段没有公共点,不会重合覆盖.问有多少个交点. 析:题意很明确,可是并不好做,可以先把平行与x轴和y轴的分开,然后把平行y轴的按y坐标从小到 ...

  4. htmlparser API

    htmlparser所有的filter htmlparser所有的Tags htmlparser API: http://htmlparser.sourceforge.net/javadoc/inde ...

  5. JavaScript中匿名函数循环传参数(不触发函数的执行)

    我们都知道定义函数的方式有两种,一种是函数声明,另一种是函数表达式,函数声明的语法是这样的: function functionName(arg0, arg1, arg2) { // 函数体 } 函数 ...

  6. Go:坑之for range

    go只提供了一种循环方式,即for循环,在使用时可以像c那样使用,也可以通过for range方式遍历容器类型如数组.切片和映射.但是在使用for range时,如果使用不当,就会出现一些问题,导致程 ...

  7. 从零开始安装 Ambari (2) -- 准备本地 repository

    安装 Ambari,最后是为了用它部署 hadoop 集群.安装时默认使用的是 hortonworks 远程的资源,用它部署集群时,需要下载 Hadoop.Hive.HBase 的安装包,速度很慢.我 ...

  8. P2939 [USACO09FEB]改造路Revamping Trails(分层图最短路)

    传送门 完了我好像连分层图最短路都不会了……果然还是太菜了…… 具体来说就是记录一个步数表示免费了几条边,在dijkstra的时候以步数为第一关键字,距离为第二关键字.枚举边的时候分别枚举免不免费下一 ...

  9. Python Day24

    AJAX 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作 ...

  10. JavaScript高级程序设计第三版-读书笔记(1-3章)

    这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript   提供核心语言功能 DOM     提供访问 ...