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"]
三、使用模式来匹配字符串
在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实现正则表达式的更多相关文章
- js常用正则表达式2
字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对 ...
- js之正则表达式(上)
1.正则表达式的创建方式 两种方式创建:通过new修饰符创建和字面量的方式创建 1>new修饰符方式创建 var b2=new RegExp('Box','ig'); //第二个参数是 模式字符 ...
- Js用正则表达式验证字符串
js 常用正则表达式表单验证代码 作者: 字体:[增加 减小] 类型:转载 js 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...
- AngularJS进阶(十三)JS利用正则表达式校验手机号
JS利用正则表达式校验手机号 注:请点击此处进行充电! 绪 由于项目需求,需要在前端实现手机号码的校验.当然了,对于基本的格式校验应该放在客户端进行,而不需要再将待校验的手机号发送至服务端,在服务端完 ...
- JS常用正则表达式备忘录
摘要: 玩转正则表达式. 原文:JS常用正则表达式备忘录 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 正则表达式或"regex"用于匹配字符串的各个部分 下面是 ...
- JS的正则表达式及回文
function palindrome(str) { str = str.replace(/\s/g,"").replace(/[^a-zA-Z0-9]/g,"" ...
- JS的正则表达式简介
1.JS的正则表达式 1.1 简介 JS的正则表达式比较简单,总体上只分为两个功能:一个是test——用于匹配字符串是否符合规定的正则表达式规则:另外一个是exec——用于获取匹配到的数据. 1.2 ...
- Js与正则表达式
原本接着上面的章节,这一章节应该是写 Jquery事件的,由工作需要,暂时横插一篇正则表达式的学习,这里是边学边记录,错误之处,希望指正,提拔一二,不甚感激! 此章节有 1.1 正则表达式的定义 1. ...
- JS 利用正则表达式替换字符串
JS 利用正则表达式替换字符串 博客分类: JavaScript 学习资料 Java代码 收藏代码 JS 利用正则表达式替换字符串 var data = "123123,213,12312, ...
- js常用正则表达式,滚蛋吧!你们测试组bug,让你挑
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
随机推荐
- C#中的单体设计模式Singleton
经典的单体设计模式的实现就是 有一个Public的类,在这个类中,有一个私有的private的构造函数. 然后有一个静态方法,这个静态方法返回这个类的实例 举个例子如下 Public class My ...
- 面试问题 - SQL 中存储过程与函数的区别
SQL 中的存储过程与函数没有本质上的区别 函数 -> 只能返回一个变量. 函数可以嵌入到sql中使用, 可以在select 中调用, 而存储过程不行. 但函数也有着更多的限制,比如不能使用临 ...
- matlab基本语法和运算基础
转载自:http://blog.csdn.net/robertcalm/article/details/51582253 matlab语法比较随意,但正如其全名 matrix &laborat ...
- Spark Runtime概述
从Spark Runtime的角度来讲由五大核心对象:Master.Worker.Executor.Driver.CoarseGrainedExecutorBacked: Spark在做分布式集群系统 ...
- 七层登录——VB.NET版
敲完三层后,感觉还是对三层架构没有那么亲切,和小伙伴交流后,他们说多多敲几遍,就懂了,其实就是那么几条线,所以:不管会不会,先去做吧! 下面是关于七层的包图: 我的解决方案: 代码部分: U层: &l ...
- 洛谷P4707 重返现世(扩展MinMax容斥+dp)
传送门 我永远讨厌\(dp.jpg\) 前置姿势 扩展\(Min-Max\)容斥 题解 看纳尔博客去→_→ 咱现在还没搞懂为啥初值要设为\(-1\)-- //minamoto #include< ...
- vue-cli3.0 脚手架搭建项目
1.安装vue-cli 3.0 npm install -g @vue/cli # or yarn global add @vue/cli 安装成功后查看版本:vue -V(大写的V) 2.命令变化 ...
- Error: Attribute application@allowBackup value=(false) from AndroidManifest.xml:14:7-34 is also present at [:react-native-qq] AndroidManifest.xml:14:18-44 value=(true).
解决方法: 修改文件: 在manifest标签中添加 xmlns:tools="http://schemas.android.com/tools" 在application标签中添 ...
- 解决Nginx启动失败
一.Nginx下载http://nginx.org/en/download.html 二.Nginx启动失败原因1.本人下载的是nginx-1.12.1(稳定版),下载完解压后,进入路径中,start ...
- 使用navicat把一个数据库的表导入到另外一个数据库
第一步:右击数据库名,选择数据传输 第二步:全选要导的数据库表 第三步:选择目标中的数据库,然后开始就可以了