正则表达式学习总结(一)

模糊匹配

两种模糊匹配: 横向模糊和纵向模糊

横向模糊

横向模糊是指一个正则可匹配的字符串的长度不是固定的,可以是多种情况的
例子:匹配第一个字符为a,接下来2-5个b,最后为一个c.{}表示一个重复值。

var regex = /ab{2,5}c/g; g为全局模式,匹配所有
  var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc";
  console.log( string.match(regex) );  /
  // => ["abbc", "abbbc", "abbbbc", "abbbbbc"]
1
2
3
4

常用简写方式:

  • {m,}:表示至少出现 m 次
  • {m}: 等价于 {m,m},表示出现 m 次
  • ?: 等价于 {0,1},表示出现或者不出现
  • +: 等价于 {1,},表示出现至少一次

  • - : 等价于 {0,},表示出现任意次,有可能不出现

贪婪匹配:会尽可能多的匹配
惰性匹配:尽可能少的匹配

纵向模糊

纵向模糊是指一个正则匹配的字符串,具体到某一位字符时,它可以不是某个确定的字符,可以有多种可能
例子:可以匹配包含a1b,a2b,a3b等字符串,[]用于表示范围,

var regex = /a[123]b/g;
  var string = "a0b a1b a2b a3b a4b";
  console.log( string.match(regex) );
  // => ["a1b", "a2b", "a3b"]
1
2
3
4

常用简写方式:

  • \d:表示 [0-9]。表示是一位数字。
  • \D:表示 [^0-9]。表示除数字外的任意字符
  • \w: 表示 [0-9a-zA-Z_]。表示数字、大小写字母和下划线。
  • \W: 表示 [^0-9a-zA-Z_]。非单词字符
  • \s:表示 [ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页 符
  • \S: 表示 [^ \t\v\n\r\f]。 非空白符
  • .: 表示 [^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符 除外

多选分支

(p1|p2|p3),其中 p1、p2 和 p3 是子模式,用 |(管道符)分隔,表示其中任何之一, 例子:既可以匹配good,又可以匹配nice,

var regex = /good|nice/g;
  var string = "good idea, nice try.";
  console.log( string.match(regex) );
  // => ["good", "nice"]
1
2
3
4

需要注意的是分支结构是惰性的,当前面分支匹配上了就不会在匹配后面的。

示例:

  • 匹配 16 进制颜色值:#ffbbad, #Fc01DF, #FFF, #ffE
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
1
  • 匹配时间:23:59 02:07
var regex = /^(0?[0-9]|1[0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9])$/;
1
  • 匹配日期:2017-06-10
var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/
1
  • window 操作系统文件路径: F:\study\javascript\regex\regular expression.pdf,F:\study\javascript\rege,  F:\study\javascript, F:\
var regex = /^[a-zA-Z]:\\([^\\:*<>|"?\r\n/]+\\)*([^\\:*<>|"?\r\n/]+)?$/;
1
  • 匹配 id:
var regex = /id="[^"]*"/
1
最后更新时间: 10/9/2019, 9:28:44 AM