JavaScript RegExp 对象用法详解


Posted in Javascript onSeptember 24, 2019

当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。

简单的模式可以是一个单独的字符。

更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。

您可以规定字符串中的检索位置,以及要检索的字符类型,等等。

1.基本用法

<script>
  // 创建正则
  var reg = /hello/
  // 检测某个字符串是否有符合正则格式的文本
  var flag = reg.test("hello world")
  console.log(flag) // true
</script>

2.修饰符

修饰符用于执行区分大小写和全局匹配

i 不区分大小写

g 全局匹配

<script>
  // 默认会区分大小写
  var reg = /hello/
  var flag = reg.test("Hello World")
  console.log(flag) // false
  // 添加i修饰符 不区分大小写
  var reg2 = /hello/i
  var flag2 = reg2.test("Hello World")
  console.log(flag2) // true

  var str = "I'm in a bad mood, really bad"
  // 默认非全局匹配
  var reg3 = /bad/
  var newStr = str.replace(reg3,"good")
  // 只替换了一个bad
  console.log(newStr) // I'm in a good mood, really bad
  // 全局匹配
  var reg4 = /bad/g
  var newStr2 = str.replace(reg4,"good")
  // 替换了全局的bad为good
  console.log(newStr2) // I'm in a good mood, really good

  // 同时使用
  var reg5 = /bad/gi
</script>

3.元字符

元字符是拥有特殊含义的字符:

. 查找单个字符,除了换行和行结束符。(通俗的说是任意字符)

  • \d 匹配数字0-9
  • \D 匹配非数字
  • \s 匹配任意空白字符(不局限空格)
  • \S 匹配非空白字符
  • \w 元字符用于查找单词字符。(单词字符包括:a-z、A-Z、0-9,以及下划线)
  • \W 元字符用于查找非单词字符。

4.方括号

方括号用于查找某个范围内的字符

  • [abc] 匹配中括号中存在的一个字符(a,b,c中的一个)
  • [^abc] 匹配中括号中不存在的一个字符(除a,b,c中以外的字符)
  • [0-9] 查找任何从 0 至 9 的数字。
  • [a-z] 查找任何从小写 a 到小写 z 的字符。
  • [A-Z] 查找任何从大写 A 到大写 Z 的字符。
  • [A-z] 查找任何从大写 A 到小写 z 的字符。

5.量词

  • \d{6} 匹配6个数字
  • \d{4,6} 匹配4到6个数字
  • \d{4,} 匹配至少4个数字
  • ? 0或1 超出1个不匹配
  • + 至少1个
  • * 0个或多个

.*会尽可能的匹配更长的字符(贪婪)

.*?会尽可能的匹配更短的字符(禁止贪婪)

\d{4,6} 会尽可能的匹配更长的字符(贪婪)

\d{4,6}? 会尽可能的匹配更短的字符(禁止贪婪)

6.边界匹配

^n 匹配任何开头为 n 的字符串。

n$ 匹配任何结尾为 n 的字符串。

7.实例

匹配手机号

var reg = /^1\d{10}$/;

匹配QQ号

var reg = /^[1-9]\d{4,10}$/;

匹配身份证号

var reg = /^[1-9]\d{16}[Xx\d]$/;

变量名检测(只能由字母,数字,下划线组成,且不能以数字开头,长度6-15)

var reg = /^[A-z_]\w{5,14}$/;

8.相关方法

test():检测正则表达式是否能在指定字符串中查找到匹配的文本

<script>
  var str = "hi66morning77"
  // 匹配连续的3个数字
  var reg = /\d{3}/
  console.log(reg.test(str)) // false
  // 匹配连续的7个小写字母
  var reg2 = /[a-z]{7}/
  console.log(reg2.test(str)) // true
</script>

match():查找字符串,将符合正则表达式规则的文本以数组形式返回,如果没有指定全局匹配,则只查找一次。找不到就返回null

<script>
  var str = "hi66morning77"
  // 匹配连续的2个数字 非全局匹配
  var reg = /\d{2}/
  console.log(str.match(reg)[0]) // 66
  // 匹配连续的2个数字 全局匹配(推荐)
  var reg2 = /\d{2}/g
  console.log(str.match(reg2)) // ["66", "77"]  
</script>

search():返回目标自字符串第一次出现的索引值(所以全局匹配被忽略)

<script>
  var str = "hi66morning77"
  // 匹配连续的2个数字 非全局匹配
  var reg = /\d{2}/
  console.log(str.search(reg)) // 2
  // 匹配a,b,m中的一个
  var reg2 = /[abm]/
  console.log(str.search(reg2))  // 4   
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
css值转换成数值请抛弃parseInt
Oct 24 Javascript
使用jQuery避免鼠标双击的解决方案
Aug 21 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
jQuery控制cookie过期时间的方法
Apr 07 Javascript
javascript动态创建链接的方法
May 13 Javascript
基于javascript数组实现图片轮播
May 02 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
Jun 22 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
BootStrap 可编辑表Table格
Nov 24 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
layui数据表格重载实现往后台传参
Nov 15 Javascript
避坑之 JavaScript 中的toFixed()和正则表达式
Apr 19 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
Sep 24 #Javascript
解决layui table表单提示数据接口请求异常的问题
Sep 24 #Javascript
关于layui时间回显问题的解决方法
Sep 24 #Javascript
Vue之Mixins(混入)的使用方法
Sep 24 #Javascript
JavaScript Array对象使用方法解析
Sep 24 #Javascript
详解简单易懂的 ES6 Iterators 指南和示例
Sep 24 #Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
Sep 24 #Javascript
You might like
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
JS获取后台Cookies值的小例子
2013/03/04 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
webpack多页面开发实践
2017/12/18 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python获取邮件地址的方法
2015/07/10 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
python 异或加密字符串的实例
2018/10/14 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
应届大学生自荐信
2013/12/05 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
入党政审材料范文
2014/12/24 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
学校少先队工作总结
2015/08/12 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android