3. 【正则】量词

n+ 代表匹配多个或1个符合n的字符

  • +有些类似g全局匹配,但不同的是会将连续符合规则的字符连接在一起。
  • 正则具有两个特性:
  • 不回头:匹配过的字符,不会再匹配
  • 贪婪模式:能匹配多则不匹配少(针对量词+才有贪婪?)
var str = 'abc'
var reg = /\w+/g
str.match(reg) // ["abc"]

var reg1 = /\w/g
str.match(reg) // ["a", "b", "c"]

var reg2 = /\w+/
str.match(reg) // ["abc"]

var str = 'a+bc'
var reg = /\w+/g
str.match(reg) // ["a", "bc"]

var str = 'a+bc'
var reg = /\w+/
str.match(reg) // ["a"]

n* 代表匹配多个或0个符合n的字符

  • 和+的区别是,匹配出来的结果比+多了一个空字符串
var str = "abc"
var reg = /\w*/
str.match(reg) // ["abc"]

var str = "abc"
var reg = /\w*/g
str.match(reg) // ["abc", ""]

var str = "abc+-"
var reg = /\w*/g
str.match(reg) // ["abc", "", "", ""] // 第一个"" 为匹配+的结果,第二个""为匹配-的结果,第三个""为匹配的最后一位

n? 代表匹配1个或0个符合n的字符

"ab".match(/\w?/g) // ["a", "b", ""]

{x,y} 代表区间,从x到y个

  • x需小于y
  • 如果不写y,{x,}代表x到正无穷
  • 如果不写, {x}代表个数为x个
"abc".match(/\w{1,2}/g) // ["ab", "c"]

^n代表匹配以n开头的字符

// 匹配出以字母开头后面是数字的字符
"a1bc".match(/^\w\d/g) // [ "a1" ]

n$代表匹配以n结尾的字符

// 匹配出以字母结尾前面是数字的字符
"a1a1c".match(/\d\w$/g) // [ "1c" ]

x(?=y) 代表匹配x后面是y的字符,最终将x匹配出来

  • x(?!y)代表匹配x后面不是y的字符,最终将x匹配出来
"ab234ab".match(/a(?=b)/g)  // ["a", "a"]

总结

  • n{1,} === n+
  • n{0,} === n*
  • n{0,1} === n?

parctice

  • 匹配以ab开头并且以ab结尾的任意字符
"ab564DFab".match(/^ab[\w\W]*ab$/g) // ["ab564DFab"]
"ab564DFab".match(/^ab.*ab$/g) // ["ab564DFab"]
  • 匹配以ab开头或以ab结尾的任意字符
"4ab564DFab".match(/(^ab.*)|(.*ab$)/g) // ["4ab564DFab"]
  • 以138开头的手机号码
/^138\d{8}$/.test("13812345678") //true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考博文:http://www.cnblogs.com/tugenhua0707/p/5037811.html 1...
    createEngine阅读 678评论 0 0
  • 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、...
    依米_xx阅读 158评论 0 0
  • 正则表达式 匹配非打印字符(assii码前27个 除了0 \cx:例: \ci 匹配ctrl+i(windows系...
    老师好我是王同学阅读 179评论 0 1
  • RegExp对象表示正则表达式,它是对字符串执行模式匹配的工具。 正则表达式的基本语法如下: 1 直接量语法:/p...
    天外来人阅读 524评论 2 0
  • [TOC] 什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格...
    Selen_Lin阅读 577评论 0 0