499689317 / notes

note
2 stars 0 forks source link

正则表达式 #24

Open 499689317 opened 4 years ago

499689317 commented 4 years ago

正则相关概念

  1. 正则表达式是一系列匹配目标字符串的规则
  2. 正则表达式每次只匹配一个字符
  3. 正则默认进行贪婪匹配即默认匹配符合规则的最长子串

正则常用模板

\d:即digit,表示匹配的字符为数字,如\d+可以匹配至少1个数字 \w:即world,表示匹配的字符为常用字符(数字,下划线,字母),如\w+可以匹配至少1个常用字符 \s:即space,表示匹配空格(空格键,Tab键,回车键打出来的空格),如\s+可以匹配至少1个空格字符

// \d试例
/\d+/.test("123456789");// 返回结果true
/\d+/.exec("123456789");// 返回结果"123456789"
// \w试例
/\w+/.test("123_mdh");// true
/\w+/.exec("123_mdh");// "123_mdh"
// \s试例
/\s+/.test("   ");// true

.:占位符,即.表示可以匹配任意字符 /.+/.test("abc_111");//true

正则匹配次数

+:表示匹配+前面字符串对应字符或子表达式至少1次,如\d+等价于\d{1,}/abc+d/可以匹配abcd, abccd **:表示匹配前面字符串对应字符或子表达式x次(x>=0),如\w*等价于\w{0,}/abc*d/可以匹配abd, abcd ?:表示匹配?前面字符串对应字符或子表达式0次或者1次,如\s?等价于\s{0,1}, /abc?c/可以匹配abd, abcd {n,m}**:表示匹配对应模板x次(n<=x<=m

正则匹配范围

[]:表示此次匹配的范围为[]内部例举的字符 ():表示此次匹配的字符为()内的一个整体 |:表示或关系,经常会与()连用 [^]:表示不在[]范围内的字符,与[]相反

// []与()
/[1-9](aabbcc){1,8}/.test("a234aabbcc89");// true
/[1-9]|(aabbcc){1,8}/.test("aabbcc123");// true
// []内的字符就表示字符本身
/aabbcc[.]{1,8}/.test("aabbcc.");// true

贪婪匹配与非贪婪匹配

?:当?跟在与匹配次数相关的元字符后时表示当前的匹配为非贪婪匹配