Ashley’s Blog

A blogging framework for Ashley.

Regex Review

复习 regexp

/hello world/

/hello world\b/ 其实还有\B

/^hello world$/

\w [A-Za-z0-9_]


/g global

/i ignore

/m multiple


exec 通过( )分组匹配

var osVersion = 'Ubuntu 8';//其中的8表示系统主版本号  
re=/^[a-z]+\s+(\d+)$/i;//用()来创建子匹配  
arr =re.exec(osVersion);  
console.log(arr[0]);//整个osVersion,也就是正则表达式的完整匹配
console.log(arr[1]);//分组 第一个括号所匹配的  8

反向引用 先挖个大坑 To be continued……..

非贪婪匹配

  • ??
  • +?
  • *?
  • {1,4}?

分组相关()

  • /([‘“])[^’”]*\1/

  • (?:…) 只组合不记忆

  • (?=…) 先行断言 指定一个位置 零宽 并非真正匹配 /Java([Ss]cript)(?=:)/ 可以匹配”Javascript: The Definitive Guide”中的Javascript 不包含冒号 但是必须要有!

  • (?!…) 负向先行断言

String方法

  • search
  • replace
  • match
  • split

RexExp方法

  • exec
  • test

通过上面的学习我尝试去分析一下Jquery源码中一个正则表达式

rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/

最外面包裹的的恰好是代表完全匹配的/^…$/

次外层只组合不记忆(?:…)

  • \s* 一些空格
  • (<[\w\W]+>) Tag标签
  • [^>]* 任意非>字符
  • | 或者
  • #([\w-]*)) #+任意字符或者-

所以该正则匹配的是 Tag标签 或者 #开头的字符串(获取id用吗?)。 分析的是否正确等下一篇继续介绍jQuery源码的blog再分析吧