正则表达式的学习与深化笔记

题记:入行不久,正则是个很关键的知识点,利用几天的业余时间学习却发现效率不高。还是边学边总结吧,也为和我具有类似情况的同鞋们提供一个参考。

总原则:实例配合理论,以理论创建实例,以实例验证理论,理论结合实例透彻理解正则灵活应用正则。

正则两个作用:模式匹配、模式替换。

定义:var pattern = /s$/    等价于   var pattern = new RegExp("s$")

$匹配字符串的结尾,多行检索中匹配一行的结尾

实例1:判断一个字符串是否以“s”结尾 / 将尾部的“s”替换成“--s”

var pattern = /s$/ ;

alert(pattern.test('https'));//true

alert(pattern.test('http'));//false

alert('https'.replace(pattern,'--s')); //http--s

alert('http'.replace(pattern,'--s'));//http

?? 多行检索的实例不知道是什么,求指教!!

^匹配字符串的开头,多行检索中匹配一行的开头。

实例2:去除字符串开头和结尾的空格

alert('-'+' 你好 '.replace(/(^\s*)|(\s*$)/g, "")+'-'); //-你好-

\s 任何Unicode空白的字符(全角和半角空格)

| 分组选择,或,在上例中表示“字符串开始的空格或字符串结尾的空格,替换成空字符串”

() 组合,将几个项组合为一个单元

* 匹配前一项零次或多次,在上例中如果不使用此符号,只能去掉开口的第一个空格和结尾的最后一个空格

alert('-'+'   你好     '.replace(/(^\s)|(\s$)/g, "")+'-'); //-  你好    -

g 正则中的修饰符,执行一个全局匹配(找到所有匹配,而不是找到一个之后就停止)

alert('-'+' 你好     '.replace(/(^\s*)|(\s*$)/, "")+'-'); //-你好    -

实例3:替换连续的字符串片段

i 正则中的另一个修饰符,执行不区分大小写的匹配

alert('JavaScript has no relationship with Java'.replace(/java/ig, "$"));

//$Script has no relationship with $

上例中修饰符/g和/i可以互换位置不影响结果,如:

alert('JavaScript has no relationship with Java'.replace(/java/gi, "$"));

正则中的修饰符:i , g , m(启用多行匹配模式,^和$匹配每一行的开始和末尾)

实例4:替换单词

alert('JavaScript has no relationship with Java'.replace(/\bjava\b/ig, "$"));

//JavaScript has no relationship with $

\b 匹配一个单词的边界

\B 匹配非单词边界的位置

alert('JavaScript has no relationship with java'.replace(/\bjava\B/ig, "$"));

//Java$ has no relationship with $Java

正则中的锚字符 --- 指定匹配位置:^  $  \b  \B  (?=p)   (?!p)

RegExp 对象

5个属性:.source   .global    .ignoreCase   .multiline   lastIndex

2个方法:.exec()    .test()

遇到的时候结合实例再讲吧...

常用场景解读:

场景1:QQ号

/^[^0][0-9]{4,9}/或者/^[1-9][0-9]{4,9}/

QQ号最少5位,最多10为(最起码当前是),第一位不能是0,后面是数字的4-9位的任意组合

学点记要:^放在中括号外匹配开头,放在中括号内表示排除式匹配

场景2:待续。。

原文地址:https://www.cnblogs.com/longze/p/2942282.html