正则表达式(First Day)

1, 匹配第一个字符为a,接下来2-5字符为b,最后一个为c
/ab{2.5}c/g
案例中用的正则是 /ab{2,5}c/g,其中 g 是正则的一个修饰符。表示全局匹配,即,在目
标字符串中按顺序找到满足匹配模式的所有子串,强调的是“所有”,而不只是“第一个”
。g 是单词 global 的首字母。

在这里插入图片描述
2, 纵向模糊匹配
表示:一个匹配正则的字符串,具体到某一位字符时,可以是不确定的某个字符,可以是多个可能。
eg: a[123]b
代表:第一个字符为a,第二个为1/2/3,第三个为b
在这里插入图片描述
3, 范围匹配:
比如 [123456abcdefGHIJKLM],可以写成 [1-6a-fG-M]。用连字符 - 来省略和简写。

4,取反匹配
纵向模糊匹配,还有一种情形就是,某位字符可以是任何东西,但就不能是 “a”、“b”、“c”。
此时就是排除字符组(反义字符组)的概念。例如 [^abc],表示是一个除 “a”、“b”、"c"之外的任意一个字
符。字符组的第一位放 ^(脱字符),表示求反的概念。
当然,也有相应的范围表示法。

5,常见的简写形式:
字符组 具体含义
\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]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符
除外。

如果要匹配任意字符怎么办?可以使用 [\d\D]、[\w\W]、[\s\S] 和 [^] 中任何的一个。

5, 量词:表示某个字符出现的次数
{m,}: 表示至少出现了m次。
{m}: 等价于{m,m},表示出现了m次。
?:等价于{0,1},表示出现或者不出现。
+: 等价于{1,},表示至少出现一次。
*: 等价与{0,},表示出现了任意次,有可能不出现。

6,贪婪匹配和惰性匹配
在这里插入图片描述

7, 多选分支匹配
匹配某个字符串中的某个字符

var regex = /good|nice/g
var string = "good idea, nice try.";
console.log(string.match(regex))  // ["good","nice"]

String.match()方法:
表示:在字符串内检索指定的值,或者匹配一个或多个正则表达式的匹配
但有个事实我们应该注意,比如我用 /good|goodbye/,去匹配 “goodbye” 字符串时,结果是 “good”

var regex = /good|goodbye/g;
var string = "goodbye";
console.log( string.match(regex) );
// => ["good"]

而把正则改成 /goodbye|good/,结果是:

var regex = /goodbye|good/g;
var string = "goodbye";
console.log( string.match(regex) );
// => ["goodbye"]

也就是说,分支结构也是惰性的,即当前面的匹配上了,后面的就不再尝试了。

案例时间
1,匹配二进制颜色
#ffbbad
#Fc01DF
#FFF
#ffE

var string = "#ffbbad #Fc01DF #FFF #ffE";
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g
console.log(string.match(regex));

2, 正则匹配时间

    // 23:59
    // 02:07
    // 7:9

    var regex = /^([02][0-9]|[2][0-3]:[0-5][0-9])/
    console.log(regex.test("23:59"));  // true
    console.log(regex.test("02:07"));  // true

3,正则匹配日期

   // 匹配日期
    // 2022-12-26
    var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][1-9]|3[0-1])/
    console.log(regex.test("2022-12-26"));  // true

4,匹配id

// 匹配id
var string = '<div id="container" class="main"></div>';
var regex = /id=".*?"/

console.log(string.match(regex)[0]);  // match方法返回一个数组在返回的数组中选中下标获取自己想要的值

5, 替换字符串

var string = 'hello'
var newArr = string.replace(/^|$/g, '@');
console.log(newArr);

6,多行匹配

var result = "I\nlove\njavascript"
var newArr = result.replace(/^|$/gm, '#')
console.log(newArr); 
// #I#
// #love#
// #javascript#

7,匹配某个字符前插入

var string = 'hello'
var newArr = string.replace(/(?=l)/g, '#')
console.log(newArr); // he#l#lo

8, 在某个字符以外的字符插入

   var string = 'hello'
   var newArr = string.replace(/(?!l)/g, 'www')
   console.log(newArr);  // wwwhwwwellwwwowww
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值