分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

JS中的正则表达式 <<<

发布时间:2023-09-06 01:52责任编辑:蔡小小关键词:正则

关于正则表达式:  

  正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

一、正则表达式的声明

 1、字面量声明:

   / 正则表达式规则 / 匹配模式

   例:var reg = /^abc$/i;

 2、new关键字声明:

   var reg = new RegExp("^abc$",i);

二、正则表达式规则的描述

  规则描述:

 符号描述 
/.../ 代表一个模式的开始和结束 
 ^匹配字符串的开始 
 $匹配字符串的结束 
 \s任何空白字符 
\S任何非空白字符
 \d匹配一个数字字符,等价于[0-9] 
\D 除了数字之外的任何字符,等价于[^0-9] 
\w匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9]
\W任何非单字字符,等价于[^A-Za-z0-9_]
.除了换行符之外的任意字符

   量词描述:

 符号描述 
{n} 匹配前一项n次
 {n,}匹配前一项n次,或者多次
{n,m}匹配前一项至少n次,但是不能超过m次 
*匹配前一项0次或多次,等价于{0,} 
+匹配前一项1次或多次,等价于{1,}
 ?匹配前一项0次或1次,也就是说前一项是可选的

  符号:

 符号描述 
|匹配选择字符中任意一个,如 p|q,可匹配q或p
 ()分组
[]要匹配的数据
^取反

三、正则表达式的常用模式

 1、g 表示全局匹配。不加g表示只匹配第一个符合要求的字符串;       

 ???????"aaa".replace(/a/,"*"); --> "*aa" ????? "aaa".replace(/a/g,"*"); --> "***" ?

 2、i 表示忽略大小写匹配,默认要求大小写也必须符合正则要求。

 ???"aAa".replace(/A/,"#"); --> "a#a" ????????"aAa".replace(/A/i,"#"); --> "#Aa" ???? "aAa".replace(/A/gi,"#"); --> "###"

 3、m 表示多行匹配模式:

   如果不带m,表示一个字符串只有一个开头一个结尾;

   如果带m,那么对于多行字符串,可以有多个开头多个结尾。

例一:
  var str="This is an\n antzone good";   var reg=/an$/;  console.log(str.match(reg));  不能够匹配字符串"an",尽管"an"后面已经换行了,但是并没有采用多行匹配,所以不是字符串行的结尾。例二:  var str="This is an\n antzone good";  var reg=/an$/m;  console.log(str.match(reg));
  可以匹配字符串"an",因为采用了多行匹配。例三:  var reg = /^b/;  var str = ‘test\nbbs‘;  execReg(reg,str);
  匹配失败,因为字符串的开头没有b字符。但是加上m修饰符之后:例四:  var reg = /^b/m;  var str = ‘test\nbbs‘;  execReg(reg,str);
  匹配到b,因为加了m修饰符之后,^已经表示行首,由于bbs在字符串第二行的行首,所以可以成功地匹配。

   [多行字符串]

    ① 字符串中用\n表示换行:"abc\nabc".replace(/^a/gm,"*");

    ② ES6中可以用反引号``表示字符串,这种字符串,支持直接换行。

 

 4、检测方法

 (1)reg.test(str):检测一个字符串是否符合正则要求,返回true或false。

 (2)reg.exec(str):检测一个字符串是否符合正则要求,符合返回数组,不符合返回null。

           返回数组的格式:

    ① index属性: 表示字符串中,第几个字符,开始匹配正则。

    ② input属性: 表示完整的被检索字符串。

    ③ 下标第0个: 表示 符合正则要求的 字符串子串。

    ④ 下标从1往后: 表示 匹配正则中()包裹的字符串子串。也就是说,正则中有几个(), 返回的数组中就有几个下标。

      例:

      /12(3)(\d)56/.exec("aaa123056bbb"); 

     [       0:"123056",       1:"3",       2:"0",       index:3,       input:"aaa123056bbb",       length:3      ]

四、正则表达式常用验证练习

 1、验证邮箱

  var reg = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+(\.[a-zA-Z]{2,3})?$/;  var mail = "123@qq.com";  console.log(reg.test(mail));

 2、验证邮政编码(6位)

  var reg = /^\d{5}$/;  var mailno = "251400";  console.log(reg.test(mailno));

 3、验证手机号(第一位为1,第二位为3/5/7/8,共11位)

  var reg = /^1(3|5|7|8)\d{9}$/;  var phone = "17862009622";  console.log(reg.test(phone));

 4、验证年龄(1~120)

  var reg = /^(\d|[1-9]\d|1[01]\d|120)$/;  // var reg = /^((1[0-1]|[1-9])?\d|120)$/;  var age = "121";  console.log(reg.test(age));

JS中的正则表达式 <<<

原文地址:https://www.cnblogs.com/zyp777/p/8980335.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved