Regexper
/Win(?:dows)?\s?([^do]{2})\s?(\d+\.\d+)?/
元字符
元字符 | 说明 |
---|---|
\ | 转义 |
. | 匹配除换行符以外的任意字符 |
^ | 匹配开头 |
$ | 匹配结尾 |
? | 重复一次或零次 |
+ | 重复一次或多次 |
* | 重复零次或多次 |
| | 多选分支 |
{n} | 重复n次 |
{n,} | 至少重复n次 |
{n,m} | 至少重复n次,但不超过m次 |
[] | 字符组 |
() | 捕获组 |
其他字符
- | 说明 |
---|---|
\d | 匹配数字 |
\D | 匹配非数字 |
\s | 匹配空格 |
\S | 匹配非空格 |
\w | 匹配非特殊字符,比如大小写字母、数字 |
\W | 匹配特殊字符 |
开头 和 转义
/^\//
,以/
开头
^
,匹配开头
\/
,转义为/
var r = /^\//;
序号 | 测试 | 返回 |
---|---|---|
1 | "/".match(r) | [ '/', index: 0, input: '/', groups: undefined ] |
2 | "/dist".match(r) | [ '/', index: 0, input: '/dist', groups: undefined ] |
3 | "a/".match(r) | null |
4 | "12".match(r) | null |
开头 和 结尾
/^$/
,匹配空字符串
^
,匹配开头
$
,匹配结尾
var r = /^$/;
序号 | 测试 | 返回 |
---|---|---|
1 | "".match(r) | [ '', index: 0, input: '', groups: undefined ] |
2 | "a".match(r) | null |
3 | "1".match(r) | null |
开头 转义 和 结尾
/^\/?$/
,匹配空字符串和斜杠/
^
,匹配开头
\/
,转义为/
$
,匹配结尾
var r = /^\/?$/
序号 | 测试 | 返回 |
---|---|---|
1 | "".match(r) | [ '', index: 0, input: '', groups: undefined ] |
2 | "/".match(r) | [ '/', index: 0, input: '/', groups: undefined ] |
3 | "//".match(r) | null |
4 | "/dist".match(r) | null |
5 | "abc".match(r) | null |
字符组
-
/[do]/
,匹配任意字符串,只要该字符串中包含字符d
或o
var r = /[do]/
序号 | 测试 | 返回 |
---|---|---|
1 | "d".match(r) | [ 'd', index: 0, input: 'd', groups: undefined ] |
2 | "o".match(r) | [ 'o', index: 0, input: 'o', groups: undefined] |
3 | "do".match(r) | [ 'd', index: 0, input: 'do', groups: undefined] |
4 | "od".match(r) | [ 'o', index: 0, input: 'od', groups: undefined] |
5 | "doo".match(r) | [ 'd', index: 0, input: 'doo', groups: undefined] |
6 | "ood".match(r) | [ 'o', index: 0, input: 'ood', groups: undefined] |
7 | "done".match(r) | [ 'd', index: 0, input: 'done', groups: undefined] |
8 | "dad".match(r) | [ 'd', index: 0, input: 'dad', groups: undefined] |
9 | "horse".match(r) | [ 'o', index: 1, input: 'horse', groups: undefined] |
10 | "had".match(r) | [ 'd', index: 2, input: 'had', groups: undefined] |
11 | "one".match(r) | [ 'o', index: 0, input: 'one', groups: undefined] |
12 | "git".match(r) | null |
排除字符组
^
在[]
内,表示要排除的字符组
/[^do]/
,匹配任意字符串,只要该字符串中包含除字符d
或o
以外的其他字符
var r = /[^do]/
序号 | 测试 | 返回 |
---|---|---|
1 | "d".match(r) | null |
2 | "o".match(r) | null |
3 | "do".match(r) | null |
4 | "od".match(r) | null |
5 | "doo".match(r) | null |
6 | "ood".match(r) | null |
7 | "done".match(r) | [ 'n', index: 2, input: 'done', groups: undefined]' |
8 | "dad".match(r) | [ 'a', index: 1, input: 'dad', groups: undefined] |
9 | "horse".match(r) | [ 'h', index: 0, input: 'horse', groups: undefined] |
10 | "had".match(r) | [ 'h', index: 0, input: 'had', groups: undefined] |
11 | "one".match(r) | [ 'n', index: 1, input: 'one', groups: undefined] |
12 | "git".match(r) | [ 'g', index: 0, input: 'git', groups: undefined] |
排除字符组 和 重复
^
在[]
内,表示排除字符;{n}
,重复n
次
/[^do]{2}/
, 匹配任意字符串,只要该字符串中至少包含两个除字符d
或o
以外的其他字符
var r = /[^do]{2}/
序号 | 测试 | 返回 |
---|---|---|
1 | "d".match(r) | null |
2 | "o".match(r) | null |
3 | "do".match(r) | null |
4 | "od".match(r) | null |
5 | "doo".match(r) | null |
6 | "ood".match(r) | null |
7 | "done".match(r) | [ 'n', index: 2, input: 'done', groups: undefined] |
8 | "dad".match(r) | null |
9 | "horse".match(r) | [ 'rs', index: 2, input: 'horse', groups: undefined] |
10 | "had".match(r) | [ 'ha', index: 0, input: 'had', groups: undefined] |
11 | "one".match(r) | [ 'ne', index: 1, input: 'one', groups: undefined] |
12 | "git".match(r) | [ 'gi', index: 0, input: 'git', groups: undefined] |
捕获组
/Win(dows)\s?([^do]{2})\s?(\d+\.\d+)?/
(dows)
是第一个捕获组
([^do]{2})
是第二个捕获组
(\d+\.\d+)
是第三个捕获组
string.match(r)
返回一个类数组。其中,
第一个元素是匹配的完整字符串,Windows NT 6.1
第二个元素是与捕获组(dows)
匹配的内容,dows
第三个元素是与捕获组([^do]{2})
匹配的内容,NT
第四个元素是与捕获组(\d+\.\d+)
匹配的内容,6.1
var r = /Win(dows)\s?([^do]{2})\s?(\d+\.\d+)?/;
console.log("Windows NT 6.1".match(r));
//['Windows NT 6.1','dows','NT','6.1',index: 0,input: 'Windows NT 6.1']
r.test(string)
返回布尔值,true
|false
。
与捕获组匹配的内容会保存在RegExp.$1~$9
。
与第一个捕获组(dows)
匹配的内容保存在RegExp.$1
中
与第二个捕获组([^do]{2})
匹配的内容保存在RegExp.$2
中
与第三个捕获组(\d+\.\d+)
匹配的内容保存在RegExp.$3
中
var r = /Windows\s?([^do]{2})\s?(\d+\.\d+)?/;
r.test("Windows NT 6.1");//返回true
console.log(RegExp.$1,RegExp.$2,RegExp.$3);//输出 dows NT 6.1
非捕获组
(?:)
非捕获组(?:)
和 捕获组()
类似,区别是,它不会把 与其匹配的内容 保存起来,所以比较节省内存。
/Win(?:dows)\s?([^do]{2})\s?(\d+\.\d+)?/
var r = /Win(?:dows)\s?([^do]{2})\s?(\d+\.\d+)?/;
console.log("Windows NT 6.1".match(r));
//['Windows NT 6.1','NT','6.1',index: 0,input: 'Windows NT 6.1']
r.test("Windows NT 6.1")
console.log(RegExp.$1,RegExp.$2,RegExp.$3);//NT 6.1 undefined
/industr(?:y|ies)/
(?=)
/Win(?:dows)?\s?(?=98|NT)/
var r = /Win(?:dows)?\s?(?=98|NT)/;
console.log("WinNT".match(r));//[ 'Win', index: 0, input: 'WinNT']
console.log("Win 98".match(r));//[ 'Win ', index: 0, input: 'Win 98']
console.log("Windows NT 6.1".match(r));//[ 'Windows ', index: 0, input: 'Windows NT 6.1']
console.log(r.test("WinNT"));//输出true
console.log(r.test("Win 98"));//输出true
console.log(r.test("Windows NT 6.1"));//输出true
/^\/?(?=\/|$)/
匹配以下四种情况:- 空字符串
- 斜杠
/
- 以
/
开头的字符串 - 以
/
开头,且以/
结尾的字符串