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 相关文章推荐
JS 非图片动态loading效果实现代码
Apr 09 Javascript
js修改table中Td的值(定义td的单击事件)
Jan 10 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 Javascript
js 实现浏览历史记录示例
Apr 20 Javascript
微信小程序基于本地缓存实现点赞功能的方法
Dec 18 Javascript
让Vue也可以使用Redux的方法
May 23 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
TypeScript基础入门教程之三重斜线指令详解
Oct 22 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
May 02 Javascript
JS实现页面数据懒加载
Feb 13 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
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
node.js require() 源码解读
2015/12/13 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
浅析Ajax语法
2016/12/05 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
python检测是文件还是目录的方法
2015/07/03 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
德尔福集团DELPHI的笔试题
2012/02/22 面试题
2014年计算机专业个人自我评价
2014/01/19 职场文书
英语专业求职信
2014/07/08 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
python如何做代码性能分析
2021/04/26 Python
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis