一、创建正则表达式

   一共有两种方式:

      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. JsonPath的用法

    有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下 语法格式 JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有 ...

  2. Java实现WC基本功能

    GitHub仓库:https://github.com/douyazai/WCbase 一.WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命 ...

  3. Note: Clay Codes: Moulding MDS Codes to Yield an MSR Code

    Background Erasure Code 纠删码:与纠错码.检错码类似,均为线性分组码,通过编码可以在有限损失的前提下恢复丢失的数据.  假设每个磁盘存储w比特数据,设\(d_0,\cdots ...

  4. 对 React Context 的理解以及应用

    在React的官方文档中,Context被归类为高级部分(Advanced),属于React的高级API,但官方并不建议在稳定版的App中使用Context. 很多优秀的React组件都通过Conte ...

  5. 2017乌鲁木齐区域赛I(带权并查集)

    #include<bits/stdc++.h>using namespace std;int f[200010];//代表元long long rl[200010];//记rl[i]为结点 ...

  6. [Xcode 实际操作]三、视图控制器-(4)使用UINavigationController导航栏和工具栏

    目录:[Swift]Xcode实际操作 本文将演示如何显示和隐藏导航视图的导航栏和工具栏 打开第一个视图控制器 import UIKit class FirstSubViewController: U ...

  7. [Xcode 实际操作]四、常用控件-(1)UIButton控件的使用

    目录:[Swift]Xcode实际操作 本文将演示按钮控件的使用,按钮是用户界面中最常见的交互控件 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import U ...

  8. 使用java画一张海报

    PS: 没找到合适的海报背景,就随便找了一张,使用技术都是相同的 1. 添加依赖 这俩其实跟本章节的核心技术没有关系,是为了获取QQ昵称和QQ头像而引入的. <!-- jsoup --> ...

  9. 牛客 PUBG

    题目链接:点击打开链接 题目大意:跑毒,跑到安全区,每个地方有敌人,输出路线经过的最少敌人的数量:-1是起点. -2是安全区 输入 5 6 6 0 -2 3 4 2 1 2 1 2 2 8 9 7 8 ...

  10. php静态方法和属性

    静态方法和属性由static关键字定义 静态方法和属性不用实例化也可以直接访问,如 self::test(),self::tt 类实例化后可以访问静态方法,但是不可以访问静态属性 声明类属性或方法为静 ...