正则表达式

1、横向

横向模糊指的是,一个正则可匹配的字符串的长度不是固定的,可以是多种情况的。
实现:量词 {m,n} 表示连续出现最少 m 次,最多 n 次。
1、{m,} 表示至少出现m次。
2、? 等价于{0,1},表示出现或者不出现。记忆方式:问号的意思表示,有吗?
3、+ 等价于{1,},表示出现至少一次。记忆方式:加号是追加的意思,得先有一个,然后才考虑追加。
4、* 等价于{0,},表示出现任意次,有可能不出现。记忆方式:看看天上的星星,可能一颗没有,可能零散有几颗,可能数也数不过来。 贪婪

2、纵向

实现:字符组 [abc],表示该字符是可以字符“a”、“b”、“c”中的任何一个。
 1、[^abc]  表示求反的概念
 2、\d就是[0-9]。表示是一位数字。记忆方式:其英文是digit(数字)。
 3、\w就是[0-9a-zA-Z_]。表示数字、大小写字母和下划线。记忆方式:w是word的简写,也称单词字符。
 4、\s是[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。记忆方式:s是space character的首字母。
 5、.就是[^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。记忆方式:想想省略号...中的每个点,都可以理解成占位符,表示任何类似的东西。
 6、匹配任意字符 [\d\D]、[\w\W]、[\s\S]和[^]

3、贪婪匹配和惰性匹配

贪婪匹配解释:贪婪的,它会尽可能多的匹配

var regex = /\d{2,5}/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["123", "1234", "12345", "12345"]

惰性匹配解释:尽可能少

var regex = /\d{2,5}?/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["12", "12", "34", "12", "34", "12", "34", "56"]

4、多选分支

解释:一个模式可以实现横向和纵向模糊匹配。而多选分支可以支持多个子模式任选其一。
比如 (p1|p2|p3),其中 p1、p2 和 p3 是子模式,用|(管道符)分隔,表示其中任何之一。

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

但有个事实我们应该注意,分支结构也是惰性的,即当前面的匹配上了,后面的就不再尝试了。

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

5、匹配位置

1、^和$

^(脱字符)匹配开头,在多行匹配中匹配行开头。
$(美元符号)匹配结尾,在多行匹配中匹配行结尾。

多行匹配模式时,二者是行的概念,这个需要我们的注意:

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

2、\b 和\B

解释:\b 是单词边界,具体就是\w 和\W 之间的位置,也包括\w 和^之间的位置,也包括\w 和$之间的位置。

var result = "[JS] Lesson_01.mp4".replace(/\b/g, '#');
console.log(result);
// => "[#JS#] #Lesson_01#.#mp4#"
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值