【2021-09-11】JS学习(六)--正则表达式

1. 正则表达式对象的创建

1.1 构造函数

修饰函数只能是g i m,可以省略

var pattern = new RegExp("正则表达式内容","修饰符");

var pattern = new RegExp("abc","img");

1.2 字面量

var pattern = /正则表达式/修饰符;

var pattern = /adc/img

2. 修饰符

  • i:ignore case 忽略大小写

    abc acnnACxqcqxabc

  • m:multiline 多行匹配 (\n)

    如果没有\n,m修饰符将毫无意义。

  • g:global 全词匹配

如果加了这修饰符,在匹配时会维护一个lastIndex的属性,用来记录当前匹配到这个字符串时的结束的位置,下一次匹配从lastIndex开始。

如果没有g,lastIndex一直为0。

/abc/g aBCAbcabc

true lastIndex

下一次匹配的时候 会从lastIndex开始


3. 原型方法

3.1 exec()

参数:字符串

返回值:类数组对象

【数组,index,input...】

从参数中获取目标字符串

1.

var pattern = /abc/g;
​
var str = "abc";
​
var result = pattern.exec(str);
​
console.log(result);

插件:

nodemon

npm i nodemon -g : 检测 js文件的变化,并自动运行 js*

var pattern = /abc/g;
​
var str = "ababc ac ab abcd we"
​
console.log(pattern.exec(str));
​
console.log("lastIndex:" + pattern.lastIndex);//5
​
console.log(pattern.exec(str));
​
console.log("lastIndex:" + pattern.lastIndex);//15
​
console.log(pattern.exec(str));//null
​
console.log("lastIndex:" + pattern.lastIndex);//0

2.

/abc/: 只匹配abc或者其他大小写状态

/abc(d|e): 匹配abcd或abce

var pattern = /abc(d|e)/g;
​
var str = "abcc abcd ab abce";
​
console.log(pattern.exec(str));
​
console.log(pattern.lastIndex);//abcd  5   9
​
console.log(pattern.exec(str));
​
console.log(pattern.lastIndex);//abcd   13     17
​
console.log(pattern.exec(str));
​
console.log(pattern.lastIndex);//0
  var pattern = /abc(d|e)/g;
    var str = "abcc abcd ab abce";    
        while (pattern.exec(str) === null) {
    console.log(XPathResult[0]);
}//abcd   abce

3.2 test()

test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

参数:str

返回值:Boolean true false

    var pattern = /abc/i;
    var string = "hello 123 abc";
    console.log(pattern.test(str));//true 

3.3 toString()

参数:无

返回值:string

//var pattern= /abc/i;
var pattern = new RegExp("abc","i");
console.log(pattern.toString());//转为字符串

4. 原型属性

  • global

  • ignoreCase

  • multiline

  • source

  • flags

  • lastIndex

var pattern = /abc/img;
​
console.log(pattern.global);
​
console.log(pattern.ignoreCase);
​
console.log(pattern.multiline);
​
console.log(pattern.source);
​
console.log(pattern.flags);

5 . String 对正则表达式的支持

5.1 match()

调用者:string

参数:正则表达式

返回值:数组(匹配成功结果组成的数组,要注意正则表达式的全局修饰符)

5.2 search()

调用者:string

参数:正则表达式,若不是,会先使用RegExp将其转为构造函数

不支持全局检索(g)

如果匹配成功,返回第一个成功的值

不成功 -1

var pattern = /...\./g;
var str = "abc.d abcd aacbc abc.c";
console.log(str.search(pattern));//0
​
//不成功
var pattern = /.........\./g;
var str = "abc.d abcd aacbc abc.c";
console.log(str.search(pattern));//0

5.3 replace()

调用者:string

参数:正则表达式,要替换的字符串

返回值:替换后的文本,不改变原字符串(string)

//替换文本内容
var text ="Javascript";
text.replace(/javascript/gi,"Javascript");
console.log(text);
console.log(text.replace(/javascript/gi,"Javascript"));

6 . 正则表达式的规则---在js中的运用

6.1 字符类(重点)

  • . 用来匹配任意单个字符, 行结束符除外

  • \d 匹配任意的一个阿拉伯数字 等价于【0-9】

  • \D 匹配任意的一个不是阿拉伯数字的字符 等价于【^0-9】

  • \w 匹配任意字母,数字,下划线 等价于【A-Z a-z 0-9 _】

  • \W 匹配任意不是字母,数字,不是下划线 等价于【^A-Z a-z 0-9 _】

  • \s 匹配空白符---空格,tab(制表符) 换行符 换页符和其他Unicode (\u00A0等)

  • \S 匹配非空白符

  • \t 匹配一个水平制表符(tab)

  • \n 匹配一个换行符(linefeed)

  • \r 匹配一个回车符(carriage return)

  • \v 匹配一个垂直制表符(vertical tab)

  • \f 匹配一个换页符(form-feed)

var pattern = /abc/g;
var str = "abcd abc";
console.log(str.match(pattern));//abcd  abcd
​
var pattern = /abc./g;
var str = "abcd abc";
console.log(str.match(pattern));//abc  abcc
​
//匹配abc.
var pattern = /abc./g;
var str = "abc.d abcd aacbc abc.c";
console.log(str.match(pattern));//abc. abc.
​
//匹配 三个字符开头 ,结束
var pattern = /...\./g;
var str = "abc.d abcd aacbc abc.c";
console.log(str.match(pattern));

6.2 字符集合

  • 【0-9】

  • 【A-Z】

  • 【^A-Z】

  • 【012】

6.3 分组

(|)

6.4 正则表达式案例----验证

案例:日期验证

//日期格式  2021-09-01
var pattern = /^ (\d{4})-(\d{2})-(\d{2})$/g;
var str = "2021-09-01"
console.log(pattern.test(str));
//进一步
var pattern = /^ [1-9]\d{3}-(\d{2})-(\d{2})$/g;
var str = "2021-09-01"
console.log(pattern.test(str));
//再进一步
var pattern = /^ [1-9]\d{3}-(0[1-9]|1[0-2])-(0[0-9]|[1-2][0-9]|3[0-1])$/g;
var str = "2021-09-01"
console.log(pattern.test(str));

手机号码验证

// 判断是否为手机号   var myreg=/^[1][3,4,5,7,8][0-9]{9}$/;
//这个表达式的意思是:
//1--以1为开头;
//2--第二位可为3,4,5,7,8,中的任意一位;
//3--最后以0-9的9个整数结尾。
  isPoneAvailable: function (pone) {
    var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;
    if (!myreg.test(pone)) {
      return false;
    } else {
      return true;
    }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值