关于正则表达式

作者: 7天苹果 | 来源:发表于2017-06-10 17:15 被阅读45次

(1)一些常用的元字符

  • . 匹配除换行符之外的任意字符,如果要包含任意字符,可使用(.|\n)

  • \w 匹配字母或数字或下划线或汉字,等价于[a-zA-Z0-9_]

  • \s 匹配任意的空白符,包含换页符\f、换行符\n、回车符\r、水平制表符\t、垂直制表符\v

  • \d 匹配数字

  • \b 匹配单词的开始或结束

  • ^ 匹配字符串的开始处

  • $ 匹配字符串的结束处。

  • * 匹配前面的子表达式任意次。

  • [xyz] 字符集合,表示其中任意一个字符。表示范围可用-链接,例如[a-z] 表示a-z之间的任意一个字母。还可以这样书写[A-Za-z0-9]。

  • [^xyz] 字符集合,表示非其中任意一个字符。表示范围可用-链接,例如[^a-z] 表示非 a-z之间的任意一个字母。

  • | 表示或(or)关系,例如 com|cn,表示匹配com或者cn。

  • () 用于分组,其分组中的内容可已通过$1-$9按顺序获取(字符串相关方法中),之后的正则中也可以通过\1-\9进行引用(正则表达式内部)。(分组0表示整个正则匹配内容或整个正则表达式)

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

  • a*表示字符a连续出现次数 >= 0 次
  • a+表示字符a连续出现次数 >= 1 次
  • a?表示字符a出现次数 0 或 1 次
  • a{5}表示字符a连续出现次数 5 次
  • a{5,}表示字符a连续出现次数 >= 5次
  • a{5,10}表示字符a连续出现次数为 5到10次 ,包括5和10

(3)常用方法

  • RegExp上用来匹配提取的方法——exec()

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
  • 判断是否匹配正则——test()

返回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方法

在字符串上调用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);

相关文章

  • 正则表达式入门

    正则表达式 关于正则表达式相信很多学计算机的人都听说过 尤其是做编程行业的人 那什么是正则表达式 正则表达式,又称...

  • 2018-11-02jmeter关联,正则表达式

    在线工具 一、Jmeter关联的方式 2、设置正则表达式提取器 三、关于正则表达式的举例说明 正则表达式: 1.取...

  • 2018-09-11 day17-正则表达式

    正则表达式 python关于正则的支持 提供内置模块re fullmatch(正则表达式, 字符串) - 判断字符...

  • 正则表达式 - 2017 - 完结篇

    ** 题记:接上回,我们说到了关于正则表达式的基本的语法,这次我们就来继续拓展正则表达式的内容,包括了正则表达式中...

  • 正则表达式笔记

    前几天写了一个很简陋的模板引擎,关于正则表达式,我整理了一下,仅供以后再忘记的时候参考~ 关于正则表达式(regu...

  • JavaScript中的正则

    正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象(RegExp)。 关于...

  • 正则表达式给数字添加“,”和“()”

    关于正则表达式有其他需求的,可在评论区留言

  • JavaScript 正则匹配的 Unicode 模式

    疑惑的 unicode 模式 前两天室友正在看 js 关于正则表达式的博客,发现 js 正则表达式中有个 u,可以...

  • linux之正则、三剑客(grep、sed、awk)

    关于正则表达式和三剑客: 1、什么是正则表达式? 作用和特殊字符一样。 正则表达式是为处理大量的字符串及文字而定义...

  • PHP正则表达式的应用

    关于PCRE的介绍以及实现正则表达式功能的所有说明,都可以在官方手册中看到:正则表达式(兼容 Perl) 一、认识...

网友评论

    本文标题:关于正则表达式

    本文链接:https://www.haomeiwen.com/subject/pxfcqxtx.html