正则表达式(一)
模糊匹配一、使用量词使用量词。譬如{m,n},表示连续出现最少m次,最多n次,比如/ab{2,5}c/表示匹配这样一个字符串:第一个字符是“a”,接下来是2到5个字符“b”,最后是字符“c”/ab{2,5}c/g,后面多了g,它是正则的一个修饰符。表示全局匹配。1.简写{m,} 表示至少出现m次。{m} 等价于{m,m},表示出现m次。
? 等价于{0,1},表示出现或者不出现。
+ 等价于{1,},表示出现至少一次。(追加嘛,至少要一次才能追)* 等价于{0,},表示出现任意次,有可能不出现。(通配符)二、使用字符组。譬如,表示该字符是可以字符“a”、“b”、“c”中的任何一个/ab/可以匹配如下三种字符串:"a1b"、"a2b"、"a3b"1. 使用范围广利用连接符‘-’,如表示既可以是数字也可以是小写字母2. 排除字符组你会不想要一些字符,你可以使用’^’表示脱去例如[^abc],表示是一个除"a"、"b"、"c"之外的任意一个字符3.常用的简写形式\d就是。表示是一位数字\D就是[^0-9]。表示除数字外的任意字符。\w就是。表示数字、大小写字母和下划线。记忆方式:w是word的简 写,也称单词字符\W是[^0-9a-zA-Z_] 非单词字符。\s是[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车 符、换页符。\S是[^ \t\v\n\r\f]。 非空白符。.就是[^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔 符和段分隔符除外。注意大小写哦!!!三.贪婪匹配和惰性匹配正则/\d{2,5}/,表示数字连续出现2到5次。会匹配2位、3位、4位、5位连续数字,那如果我只要2次,也就是满足匹配的下限,这就叫惰性匹配,如果要5次,也就是满足匹配的上限,这就叫贪婪匹配。怎么实现惰性匹配呢?方法就是在你的量词后面加个问号。例如 {m,n}? {m,}? ?? +? *?四.分支具体形式如下:(p1|p2|p3),其中p1、p2和p3是子模式,用|(管道符)分隔,表示其中任何之一。意思大概就和”或“差不多。/good|goodbye/,该正则表达式如果来识别goodbye这个单词,它匹配到是good,因为 | 符号是惰性的,如果匹配到第一个字符满足需求就会停止匹配(这好像和C语言的或有差不多的操作)五.具体用处(五个例子,很有用!!!)1. 写网页的时候,想要把你源码所有的颜色get出来,就可以使用正则表 达式var regex = /#({6}|{3})/g;
var string = "#ffbbad #Fc01DF #FFF #ffE";
console.log( string.match(regex) );
输出的结果是 ["#ffbbad", "#Fc01DF", "#FFF", "#ffE"]2. 匹配时间的时候,比如22:33var regex = /^(|):$/;
console.log( regex.test("23:59") );
console.log( regex.test("02:07") );
输出 true true看到这里,你会觉得奇怪,^不是表示否定的吗???而这里的意思好像不是否定,没错,官方的文档是这样说的
[^ ]否定的字符种类。匹配除了方括号里的任意字符
^从开始行开始匹配.
$从末端开始匹配.
明白差别了吗,^使用在字符组[]中才表示否定3. 匹配日期的时候,比如2020-02-25这个也不难啦,注意分类讨论/^{4}-(0|1)-(0||3)$/4. 文件夹正则表达式 var regex = /^:\\([^\\:*<>|"?\r\n/]+\\)*([^\\:*<>|"?\r\n/]+)?$/;
console.log( regex.test("F:\\study\\javascript\\regex\\") );
console.log( regex.test("F:\\study\\javascript") );
console.log( regex.test("F:\\") );
输出结果: true true true5. id正则表达式目的:<div id="container" class="main"></div>提取出id="container"如果你用/id=”.*”/(无限重复通配符)这下会把直到最后一个双引号的内容全部囊括,出事。。。。所以,惰性匹配,/id=”.*?”/惰性匹配只会获取一个题外话:我之前写python爬虫玩的时候一直记得是“点星问”,却不知道其中的原理,现在终于懂了hhh 剩下的明天补充 妈耶。。。麻烦重新排版下吧,你这复制粘贴得完全没有可读性啊 貌似看不懂 lynxtang 发表于 2020-2-25 17:07
妈耶。。。麻烦重新排版下吧,你这复制粘贴得完全没有可读性啊
https://www.52pojie.cn/thread-1115772-1-1.html
重新发了下,不好意思啊老铁{:301_1009:}
页:
[1]