Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Rashomon511 opened this issue Jul 26, 2019 · 0 comments
Open

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

Rashomon511 opened this issue Jul 26, 2019 · 0 comments

Comments

@Rashomon511
Copy link
Owner

模糊匹配

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

横向模糊

横向模糊是指一个正则可匹配的字符串的长度不是固定的,可以是多种情况的
例子:匹配第一个字符为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"]

常用简写方式:

  • {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"]

常用简写方式:

  • \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"]

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

示例:

  • 匹配 16 进制颜色值:#ffbbad, #Fc01DF, #FFF, #ffE
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
  • 匹配时间:23:59 02:07
var regex = /^(0?[0-9]|1[0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9])$/;
  • 匹配日期:2017-06-10
 var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/
  • 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/]+)?$/;
  • 匹配 id:
var regex = /id="[^"]*"/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant