Regexper,图形化正则表达式

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]/匹配任意字符串,只要该字符串中包含字符do

    在这里插入图片描述

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]/匹配任意字符串,只要该字符串中包含除字符do以外的其他字符
    在这里插入图片描述

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}/匹配任意字符串,只要该字符串中至少包含两个除字符do以外的其他字符
    在这里插入图片描述

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

在这里插入图片描述

  • /^\/?(?=\/|$)/
    匹配以下四种情况:
    • 空字符串
    • 斜杠/
    • /开头的字符串
    • /开头,且以/结尾的字符串
      在这里插入图片描述
参考文章

正则表达式高级用法(分组与捕获)
非捕获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值