正则表达式进阶
匹配 不等于 获取,
想要获取某段文本,可以通过匹配来找某段较大的文本 再通过获取获得文本, 匹配让获取更精确
匹配的对象:
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.捕获组的顺序由 由左括号 ( 决定。
4.默认情况下 正则是执行贪婪匹配的
5.捕获组的顺序由 由左括号 ( 决定。
6.匹配的优先级:前面的正则大于后面的正则(即使后面的正则是贪婪或者懒惰模式)
7.
字面量 和 构造函数
1.字面量已经确定的匹配模式 接受的参数(/ / 中的内容)会被认为是字符串
2.构造函数用于 不确定的匹配模式 接受的参数可以是变量 如:
var reg = new RegExp("^" + ele + "?")// ele 为变量

浙公网安备 33010602011771号