目录

正則表達式

reg reguläre Ausdruck

語法說明(維基百科) Playground

特殊符号 描述 示例 示例意义
| 管道符号,表示选择其中一个进行匹配 re1| re2 选择匹配正则表达式re1或者re2
. 匹配除去\n之外的任意字符 d.d 表示匹配d与d之间为任意字符的情况,如“did”“d2d”等
^ 匹配字符串起始部分 ^my 表示任何以my作为开始的字符串
$ 匹配字符串终止符 bye$ 表示匹配任何以bye结束的字符串
* 匹配0或者多次左端出现的正则表达式 [0-9]* 表示匹配以任意个数字开始的字符串
+ 匹配1次或者多次左端出现的正则表达式 [0-9]+ 表示匹配以1个或者多个数字开始的字符串
? 匹配0次或者1次左端出现的正则表达式 [0-9]? 表示匹配以0个或者1个数字开始的字符串
{N} 匹配N次左端出现的正则表达式 [0-9]{N} 匹表示配以N个数字开始的字符串
{M,N} 匹配M次到N次左端出现的正则表达式 [0-9]{M,N} 匹表示配以M个到N个数字开始的字符串
[...] 匹配来自括号中字符集的任意一个 [abcd] 表示匹配a或者b或者c或者d
[.-.] 匹配从.到.之间的任意一个字符 [a-g] 表示匹配a到g之间的任意一个字符,如a或b…
[^...] 不匹配此字符集中的任何一个字符 [^abc] 表示匹配不是字符a或b或c的任意字符
() 对正则表达式进行分组或者匹配子组 ([0-9]{3})? 表示匹配三个数字出现一次或者不出现的情况
\d\D \d任何一个十进制数字,\D任何非数字 \d\d\d 匹配三个数字的字符串
\w\W \w任何字母字符,\W任何非字母字符 \w+ 匹配一个由字母字符组成的字符串
\s\S \s任何空格字符,\S任何非空格字符 of\sthe 匹配of和the之间有任何空格字符的情况
\b\B \b任何单词边界,\B任何非单词边界 \bthe 任何以the开始的字符串
\N 匹配已保存的子组N price:\N 匹配price:后面加已保存的子组N的形式
\c 仅按照c的字面意思进行匹配 \* 匹配字符\*
\A\Z \A匹配字符串的开始,\Z匹配字符串的结尾 \Acar 匹配以car开始的字符串

密码

8个字符并包括一个大小写和数字

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/gm

8个字符并包括一个大小写和数字、特殊字符

^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$

Javascript 案例

var pattern = /^(?<content>[^|]+)+(\|(?<color>[a-z]+))?$/
      let match = "abc|gray".match(pattern)
      let color = undefined
      var cl = color || match.groups["color"]
      expect(cl).to.equal('gray');

      match = "aaaa".match(pattern)
      expect(match.groups["color"]).to.equal(undefined) //不是 undefined
      match = "aaaa|".match(/^(?<content>[^|]+)+(\|(?<color>[a-z]*))?$/)
      expect(match.groups["color"]).to.equal("")