博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript高级学习(五)——正则表达式
阅读量:3934 次
发布时间:2019-05-23

本文共 2442 字,大约阅读时间需要 8 分钟。

  • 正则表达式:也叫规则表达式,按照一定的规则组成的一个表达式,这个表达式的作用主要是匹配字符串的
  • 作用:匹配字符串
  • 在大多数编程语言中都可以使用
  • 组成:元字符或者是限定符组成的一个式子
  • 资料:MDN、百度
  • Regular Expression

元字符

符号 意义 例子
. 除\n以外的任意一个字符
[] 表示范围 [0-9]:表示0-9之间的任意一个数字
消除正则表达式中的元字符的意义 [.]:表示.
| 或者 [0-9]|[a-z]:表示是一个数字或者一个小写字母
() 分组 ([0-9])([1-5]):两组,从最左边开始计算
提升优先级 [0-9]|([a-z])|[A-Z]:小写字母优先级最高

限字符

限字符也是元字符的一种

符号 意义 例子
* 表达式出现0到多次 [a-z][0-9]*:小写字母任意一个,后面的数字出现0次或多次
+ 表达式出现1到多次 [a-z][0-9]+:小写字母任意一个,后面的数字出现1次或多次
? 表达式出现0到1次 [a-z][0-9]?:小写字母任意一个,后面的数字出现0次或1次
阻止贪婪模式
{} 表示表达式出现的次数 {0, }:相当于*
{1, }:相当于+
{0,1 }:相当于?
^ 表示表达式以什么开始 ^[0-9]:以数字开始
取非 [^0-9]:非数字
$ 表示表达式以什么结束 [0-9]$:以数字结束
\d 数字中的任意一个 相当于[0-9]
\D 非数字中的任意一个
\s 空白符中的任意一个 空格、tab等
\S 非空白符
\w 非特殊符号 [相当于[a-zA-Z0-9_]
\W 特殊符号 相当于[^a-zA-Z0-9_]
\b 单词的边界
\t 水平制表符
\ 转义符
\f 换页

练习

1.身份证号:15—18位

([1-9][0-9]{14})([0-9]{2}[0-9xX])?
2.座机号码:010-19876754 或 0431-87123490
[0-9]{3,4}[-][0-9]{8}
3.QQ号码:5-11位
[1-9][0-9]{4,10}
4.邮箱
[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}

创建正则表达式对象

RegExp

test()匹配方法,返回值为boolean

  • 通过构造函数创建对象
var reg=new RegExp(/\d{5}/);var str="我的电话号码是:10086";var flag=reg.test(str);console.log(flag);//true//(/\d{5}/)=====("\\d{5}")
  • 字面量方式创建对象
var reg=/\d{1,5}/;var flag=reg.test("我的电话号码是:888");console.log(flag);//true
验证密码强中弱

验证表单

字符串中使用正则表达式

1.match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

在正则表达式中,g表示的是全局模式匹配

var str="中国移动:10086,中国联通:10010";var array=str.match(/\d{5}/);//["10086"]var array1=str.match(/\d{5}/g);//["10086","10010"]

提取日期中的日:

在正则表达式中,()有分组的意思,可以通过RegExp.$num来提取其中一个组

var str="2017-11-12";var array=str.match(/(\d{4})[-](\d{2})[-](\d{2})/g);console.log(RegExp.$3);//12

2.replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var str="小苏好帅哦,真的是太帅了,帅,就是真帅"; str=str.replace(/帅/g,"美"); console.log(str);//小苏好美哦,真的是太美了,美,就是真美

在正则表达式中,i表示的修改为大小写不敏感

var str="HhpphH"; str=str.replace(/[h]/gi,"S"); console.log(str);//SSppSS

3.exec()方法用于检索字符串中的正则表达式的匹配。

//把里面所有的数字全部显示出来var str = "中国移动:10086,中国联通:10010,中国电信:10000";//var array = str.match(/\d{5}/g);var reg=/\d{5}/g;var array=reg.exec(str);console.log(array);console.log(reg.exec(str));console.log(reg.exec(str));console.log(reg.exec(str));

在这里插入图片描述

倘若在之后再添加一句console.log(reg.exec(str));,结果为:[“10086”]

以上代码也可以写为

var str = "中国移动:10086,中国联通:10010,中国电信:10000";  var reg=/\d{5}/g;  //通过正则表达式匹配这个字符串  var array=reg.exec(str);  while (array!=null){
//输出匹配的内容 console.log(array[0]); array=reg.exec(str); }

在这里插入图片描述

数组和伪数组

数组和为数组的区别

  • 真数组长度可变,伪数组不可变----->arguments获得实参的个数及实参的每个值,长度可变,但是是伪数组
  • 真数组可使用数组的方法,伪数组不可以使用
  • 数组是对象__proto__

转载地址:http://ktmgn.baihongyu.com/

你可能感兴趣的文章
统计学、统计学习和统计推断之间的关系
查看>>
PMP笔记:质量管理的七个工具
查看>>
悦读:重新定义公司-谷歌是如何运营的
查看>>
研发主管的烦恼:周一早晨延迟的项目会议
查看>>
研发主管的烦恼:难以执行的绩效考核
查看>>
精益Scrum(五)
查看>>
精益Scrum(六)
查看>>
精益Scrum(七)
查看>>
软件测试管理—如何写好软件测试计划书
查看>>
解读一名软件测试经理所需要具备的能力
查看>>
有效的软件测试度量
查看>>
软件评测和测试国家现行标准
查看>>
理解测试策略
查看>>
机器学习界大牛林达华推荐的书籍
查看>>
path变量备份
查看>>
Lesson2.2 & 2.3 Maya command reference & quick help
查看>>
lesson 2.4 - Converting MEL Commands to Python
查看>>
Lesson 3.1 - Python Core Data Types
查看>>
Lesson3.2 variables
查看>>
3.4.2 - Operators & 3.4.3 division and truncation
查看>>