正则表达式进阶

匹配 不等于 获取,
想要获取某段文本,可以通过匹配来找某段较大的文本 再通过获取获得文本, 匹配让获取更精确
 
匹配的对象
1.内容   
2.位置  辅助内容的定位  不占字符
 
 
**************************************************
 
1.() 和 (?:) 的区分
由于 () 具有两个功能
     1.捕获
     2.分组
(?:)  :分组,节约性能,避免大量无用的捕获结果
 
2.引用捕获结果的两种方法
     1. 反向引用 $1,2...
     2. replace函数
 
3.replace 与 全局正则/regex/g 组合,可以实现字符串的遍历搜索
 
***************************************************
 
 
常用的字符串函数
 
String的普通方法
indexOf()
charAt()
 
String 模式匹配
search()  str.search(reg)
match()   str.match(reg)   
split()      str.split(seperator, limit)
replace   str.replace(regexp|substr, newSubStr|function[, flags])
 
Regexp的方法 
exce()   reg.exec(str)
test()    reg.test(str)
 
str.search(reg) ——》 reg.test(str)
str.match(reg) ——》 reg.exec(str)
 
******************************************************************
 
注意点:
1.不管一个元字符代表多少种含义,单个元字符始终只匹配单个字符
 
2.字符集[ ] 和 | 的区别       []中只能是单个的字符任选一个 , | 可以是复杂结构
 
3.当正则表达式中包含 能接受重复的正则时(例如* ? +),通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多/尽可能少的符合正则字符,不会因为是惰性或贪婪匹配,就忽略了后面的正则,只有整个正则被匹配上,才算匹配成功。  (因此贪婪和懒惰的前提是 在使整个表达式能得到匹配)

4.默认情况下 正则是执行贪婪匹配的

5.捕获组的顺序由 由左括号 ( 决定。 

6.匹配的优先级:前面的正则大于后面的正则(即使后面的正则是贪婪或者懒惰模式)
 
7.
字面量 和 构造函数 
1.字面量已经确定的匹配模式   接受的参数(/ / 中的内容)会被认为是字符串
2.构造函数用于 不确定的匹配模式   接受的参数可以是变量 如:
var reg = new RegExp("^" + ele + "?")// ele 为变量
 
 
 
posted @ 2016-09-03 16:43  阿巴阿巴55996  阅读(68)  评论(0)    收藏  举报