德州点创教育JavaScript正则表达式授课大纲( 二 )

括号()的作用二:
在完整的模式中 , 定义子模式
/[a-z]+\d+/匹配一个或多个字母后面跟了一个或多个数字 , 但是我们想要的是后面的数字 , 可以改为/[a-z]+(\d)+/这样我们就可以从检索到的匹配中抽取数字了 ????????????括号()的作用三:
分组 , 方便数字引用 。 允许在同一表达式后面引用前面的子表达式 , 通过在\后面加一位或多位数字来实现
\1 表示引用前面第一个带()的子表达式 , \2表示引用前面第二个带()的子表达式
/['"][^'"]*['"]/ 匹配带单引号或双引号的字符串 , 可以写成 // "a.jpg" '#box' ".wrapper"
/(['"])[^'"]*\1/
注意:对于嵌套的子表达式 , 其顺序是以左括号(为准
例如: /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/
其中嵌套的子表达式[Ss]cript可以用\2来表示
括号()的作用四:
不计入数字引用的分组
/([Jj]ava(?:[Ss]cript)?)\sis\s(fun\w*)/
在上面这个分组中 , (?:[Ss]cript)?) 这个分组并不生成数字引用 , 所以\2 表示引用了 (fun\w*)这个分组
综合复习:
| 选择 , 匹配的是该符号左边的子表达式或右边的子表达式 //
(...) 组合 将几个项组合为一个单元 , 这个单元可通过 * + ? ! |等符号加以修饰 , 而且可以记住和这个组合相匹配的字符
串以供此后的使用引用
(?:...) 只组合 , 但不记忆与该组相匹配的字符
\n 和第n个分组第一次匹配的字符相匹配
8、 匹配位置
^ 匹配字符串的开头 , 在多行检索中 , 匹配一行的开头 /^[Jj]\w*[Ss]$/
$ 匹配字符串的结尾 , 在多行检索中 , 匹配一行的结尾
\b 匹配一个单词的边界
1、就是位于\w和\W之间的位置
2、或位于字符\w和字符串的开头或结尾之间的位置
3、注意:[\b]匹配的是退格符
str = "java is a good,but javascript is also,so java is ,so java"
【德州点创教育JavaScript正则表达式授课大纲】/\b[jJ]ava\b/
\B 匹配非单词边界的位置
(?=p) 零宽正向先行断言 , 要求接下来的字符都与P匹配 , 但不能包括匹配p的好些字符
(?=!p) 零宽负向先行断言 , 要求接下来的字符不与P匹配 。
例子:
/^JavaScript$/ 匹配单词JavaScript
/\sJava\s/ 匹配前后都有空格的单词 Java,而不是做为 JavaScript的前缀存在 , 但是匹配不了两头的Java
/\bJava\b/ 匹配前后都有空格的单词 Java,而不是做为 JavaScript的前缀存在 , 能够匹配两头的Java
9、修饰符
i 执行不区分大小写的匹配
g 执行一个全局匹配 , 即找到所有的匹配 , 而不是在找到第一个后停止
m 多行匹配模式 , 字符串如果有多行 , ^和&不仅匹配整个字符串的开头与结尾 , 还能匹配每行的开头与结尾
下一章 , 我们讲正则表达式的函数应用范例 。 请同学们认真学习 。