JavaScript高级学习(五)——正则表达式

  • 正则表达式:也叫规则表达式,按照一定的规则组成的一个表达式,这个表达式的作用主要是匹配字符串的
  • 作用:匹配字符串
  • 在大多数编程语言中都可以使用
  • 组成:元字符或者是限定符组成的一个式子
  • 资料: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__
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值