博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式的学习与深化笔记
阅读量:5338 次
发布时间:2019-06-15

本文共 1774 字,大约阅读时间需要 5 分钟。

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

 

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

 

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

 

定义: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/archive/2013/03/04/2942282.html

你可能感兴趣的文章
设计模式 单例模式 使用模板及智能指针
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>
博弈论小结
查看>>
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>
H5多文本换行
查看>>
HAL层三类函数及其作用
查看>>