第一种方式是直接通过/正则表达式/写出来,第二种方式是通过new RegExp('正则表达式')创建一个RegExp对象。

两种写法是一样的:

var re1 = /ABC\-001/;
var re2 = new RegExp('ABC\\-001');re1; // /ABC\-001/
re2; // /ABC\-001/

  

var re = /^\d{3}\-\d{3,8}$/;
re.test('010-12345'); // true
re.test('010-1234x'); // false
re.test('010 12345'); // false

test()测试给定的字符串是否符合条件

切分字符串

用正则表达式切分字符串比用固定的字符更灵活,请看正常的切分代码:


'a b   c'.split(' '); // ['a', 'b', '', '', 'c']
嗯,无法识别连续的空格,用正则表达式试试:'a b   c'.split(/\s+/); // ['a', 'b', 'c']
无论多少个空格都可以正常分割。加入,试试:'a,b, c  d'.split(/[\s\,]+/); // ['a', 'b', 'c', 'd']
再加入;试试:'a,b;; c  d'.split(/[\s\,\;]+/); // ['a', 'b', 'c', 'd']
如果用户输入了一组标签,下次记得用正则表达式来把不规范的输入转化成正确的数组。

  

分组

除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)。比如:

^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:

var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null
如果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来。exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。exec()方法在匹配失败时返回null。

  

全局搜索

JavaScript的正则表达式还有几个特殊的标志,最常用的是g,表示全局匹配:

var r1 = /test/g;
// 等价于:
var r2 = new RegExp('test', 'g'); 

全局匹配可以多次执行exec()方法来搜索一个匹配的字符串。当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引:

var s = 'JavaScript, VBScript, JScript and ECMAScript';
var re=/[a-zA-Z]+Script/g;// 使用全局匹配: re.exec(s); // ['JavaScript'] re.lastIndex; // 10 re.exec(s); // ['VBScript'] re.lastIndex; // 20 re.exec(s); // ['JScript'] re.lastIndex; // 29 re.exec(s); // ['ECMAScript'] re.lastIndex; // 44 re.exec(s); // null,直到结束仍没有匹配到 

全局匹配类似搜索,因此不能使用/^...$/,那样只会最多匹配一次。

正则表达式还可以指定i标志,表示忽略大小写,m标志,表示执行多行匹配


转载于:https://www.cnblogs.com/chenjf/p/6728766.html

JavaScript RegExp(正则)相关推荐

  1. JavaScript RegExp 正则对象

    文章目录 JavaScript RegExp 正则对象 RegExp 对象 修饰符 test() exec() 方括号 元字符 量词 RegExp 对象方法 支持正则表达式的 String 对象的方法 ...

  2. 判断字符串 正则_(重学前端 - JavaScript(模块一)) 14、引用类型之 RegExp (正则)(详述)...

    上一篇文章介绍了 JavaScript 中的 Date 类型,从地理方面的原理知识开始入手,如果大家认真看过上一篇文章,相信 JavaScript 中的 Date 类型已经难不住大家了!!! 但是今天 ...

  3. 【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)

    javascript正则表达式的基本使用(JavaScript RegExp 对象) 1. 正则表达式是什么? 2. 基本使用语法 2.1 正则表达式思维导图 2.2 定义正则表达式 2.2.1 普通 ...

  4. JavaScript 通过正则测试页面是否出现连续的重复字符

    在上班的路上,从群里看到有个测试朋友问有没有查看页面上是否有重叠字的工具.从字面意思看,我理解为样式问题导致文字出现堆叠. 他正在对一本上百页的一本说明书进行最后的矫正,检查是否有两个相同的字符连续出 ...

  5. JavaScript RegExp 身份证、账号密码、email正则

    什么是正则表达式 正则表达式是构成搜索模式. 在文本中搜索数据时,可以使用此搜索模式来描述正在搜索的内容. 正则表达式可以是单个字符,也可以是更复杂的模式. 正则表达式可用于执行所有类型的文本搜索和文 ...

  6. php 只能输入中英文,JavaScript基于正则实现控制输入框中只能输入中文、数字和英文的方法...

    这篇文章主要介绍了JavaScript控制输入框中只能输入中文.数字和英文的方法,基于正则验证实现字符输入限制功能,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Javascript控制输 ...

  7. [js点滴]JavaScript基础正则详解03

    匹配输入字符串的开始位置.要匹配 "^" 字符本身,请使用 "/^" $ 匹配输入字符串的结尾位置.要匹配 "$" 字符本身,请使用 &qu ...

  8. 正则语法+JavaScript的正则使用

    因为前端学习和工作的时候常用到正则,所以总结了一下正则表达式的基础语法和JavaScript怎么去使用正则 一.作用 正则的作用 1)对表单域项目(用户名.密码.邮箱.qq号码.手机等等)进行验证 2 ...

  9. RegExp 正则

    正则:就是一条规则,用于检验字符串的格式,目标就是字符串. 只要是表单提交的数据都是字符串 正则的定义: 1.var  reg=new RegExp(): 2.var reg=/格式/: 正则的方法: ...

最新文章

  1. 金融新手投标模块布局小Demo
  2. linux的yum update命令
  3. 数据挖掘基础知识-矩阵(分解)
  4. 并发编程 — 并发数据结构--转载
  5. Linux EXT3文件系统下成功恢复误删的文件
  6. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1112:最大值和最小值的差
  7. oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载
  8. 牛客小白月赛13-H(单调栈+树状数组)
  9. 2:url有规律的多页面爬取
  10. msp430入门编程47
  11. java基础学习(6)疯狂java讲义第5章课后习题解答源码
  12. WPF界面设计辅助工具--Blend
  13. stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图
  14. java服务报错连接超时
  15. PyTorch基础教程学习笔记(八):训练一个分类器
  16. cocos2d-x中的box2d(2)-Tumbler
  17. ORACLE子查询的多种用法
  18. 带有功利性的做一件事 ?
  19. 1、mos管的工作原理
  20. 李文卓:揭秘美丽说数据体系建设三部曲

热门文章

  1. Oracle基础 TO_CHAR函数参考(转)
  2. 技术研究院006---B站自用的微服务框架——Kratos
  3. 大数据之-Hadoop3.x_MapReduce_序列化案例Debug调试---大数据之hadoop3.x工作笔记0101
  4. k8s高可用集群_搭建高可用集群(部署master1节点初始化)---K8S_Google工作笔记0057
  5. Netty工作笔记0038---Netty模型--通俗版
  6. 8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
  7. 使用setsockopt TCP_NODELAY禁用 Nagle算法
  8. 华为鸿蒙系统手机央视,央视再次确认!华为投入巨资打造鸿蒙系统生态:体验媲美七成安卓...
  9. 动态修改路由_tutorial第二部分-路由参数
  10. 用汇编的眼光看C++(之const属性)