Web前端之路让前端飞Web 前端开发

关于正则表达式

2017-06-10  本文已影响45人  7天苹果

(1)一些常用的元字符

(2)要表示出现次数(重复)——限定符

(3)常用方法

let matches=pattern.exec(str);
接受一个参数:源字符串
返回:结果数组,在没有匹配项的情况下返回null

结果数组包含两个额外属性,index表示匹配项在字符串中的位置,input表示源字符串,结果数组matches第一项即matches[0]表示匹配整个正则表达式匹配的字符串,matches[n]表示于模式中第n个捕获组匹配的字符串。

要注意的是,第一,exec()永远只返回一个匹配项(指匹配整个正则的),第二,如果设置了g修饰符,每次调用exec()会在字符串中继续查找新匹配项,不设置g修饰符,对一个字符串每次调用exec()永远只返回第一个匹配项。所以如果要匹配一个字符串中的所有需要匹配的地方,那么可以设置g修饰符,然后通过循环不断调用exec方法。

//匹配所有ing结尾的单词
const str="Reading and Writing";
let pattern=/\b([a-zA-Z]+)ing\b/g; 
let matches;
while(matches=pattern.exec(str)){
    console.log(matches.index +' '+ matches[0] + ' ' + matches[1]);
}
//循环2次输出
//0 Reading Read
//12 Writing Writ

返回true或false

//判断数字区间在30~500
const num = 10;
const num1 = 50;
let pattern = /[3-9][0-9]|[1-4][0-9]{2}|500/;
console.log(pattern.test(num));                    //false;
console.log(pattern.test(num1));                   //true;
//判断电话号码,必须以1开始,第二位为3/5/7/8,之后为9位数字。
const phoneNumber = 15829061748;
const phoneNumber1 = 14023567896;
let pattern = /^1[3|5|7|8]\d{9}$/;
console.log(pattern.test(phoneNumber));      //true;
console.log(pattern.test(phoneNumber1));     //false;

在字符串上调用match方法,本质上和在正则上调用exec相同,但是match方法返回的结果数组是没有input和index属性的。

const str="Reading and Writing";
let pattern=/\b([a-zA-Z]+)ing\b/g; 
//在String上调用match
let matches=str.match(pattern);
console.log(matches);
//等价于在RegExp上调用exec
let matches1=pattern.exec(str);
console.log(matches1);
上一篇 下一篇

猜你喜欢

热点阅读