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文件 document.createElement
Oct 14 Javascript
网页开发中的容易忽略的问题 javascript HTML中的table
Apr 15 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
Jan 24 Javascript
js简单实现交换Li的值
May 22 Javascript
JQuery中层次选择器用法实例详解
May 18 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
Feb 20 Javascript
JavaScript实现旋转轮播图
Aug 18 Javascript
微信小程序自定义轮播图
Nov 04 Javascript
使用node搭建自动发图文微博机器人的方法
Mar 22 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 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中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
JS动态显示倒计时效果
2019/12/12 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
PyTorch中permute的用法详解
2019/12/30 Python
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
个人求职简历中英文自我评价
2013/12/16 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
不同意离婚代理词
2015/05/23 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL