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 相关文章推荐
javascript操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
Jul 26 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
May 19 Javascript
JQuery的ON()方法支持的所有事件罗列
Feb 28 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
多种方式实现js图片预览
Dec 12 Javascript
Angular开发者指南之入门介绍
Mar 05 Javascript
vuex中使用对象展开运算符的示例
Sep 25 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
Feb 28 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调用三种数据库的方法(1)
2006/10/09 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
php生成与读取excel文件
2016/10/14 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
BootStrap的双日历时间控件使用
2017/07/25 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python中内建函数的简单用法说明
2016/05/05 Python
Python numpy 常用函数总结
2017/12/07 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Python单元测试与测试用例简析
2019/11/09 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
如何理解Python中包的引入
2020/05/29 Python
电子信息科学专业自荐信
2014/01/30 职场文书
企业总经理职责
2014/02/02 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
企业法人任命书
2015/09/21 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript