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

正则表达式有两种创建方式:第一种:用RegExp()构造函数来创建RegExp对象
var pattern = new RegExp("[abc]"); 匹配a、b、c中的任意一个字符
第二种:通过直接量语法创建 , 直接量的定义包含在一对斜杠(/)之间,这种方式更常用 。
var pattern = /[abc]/; 匹配a、b、c中的任意一个字符
一、直接量字符:字符匹配字母和数字匹配自身\oNUL字符(\u0000)\t制表符(\u0000)\n换行符(\u0000)\v垂直制表符(\u0000)\f换页符(\u0000)\r回车符(\u0000)\xnn由十六进制数字nn指定的拉丁字符 , 例如 ,\x0A等坐于\n\uxxxx由十六进制数字xxxx指定的Unicode字符 , 例如 , \u0009等价于\t\cX控制字符^X,例如 \cJ等价于换行符\n注意:在正则表达式中 , 许多标点符号都有特殊的含义 , 如果想到正则表达式中使用这些字符的直接量进行匹配 , 则必须使用前缀\
特殊含义字符: ^ $ . * + = !: | \ / ( ) [ ] { }
直接输出格式: \^ \$ \( \) 等
二、字符类:将字符直接量单独放方括号内就成了字符类 。 /[a]1、 一个字符类可以匹配它所包含的任意字符 。
/[abc]/ 和字母 "a"、"b"、"c"中的任意一个都匹配
2、 可以通过 "^" 符号来定义否定字符类
/[^abc]/ 匹配所有不包含在方括号内的字符
3、 可以使用连字符来表示范围
/[a-z]/ 匹配拉丁字母表中的小写字母
/[a-zA-Z0-9]/ 匹配拉丁字母中任何字母和数字
4、 由于某些字符特别有用 , 因此使用这些字符的转义字符来表示它们
[XXX] 匹配中括号内的任意字符
[^XXX] 匹配不在括号内的任意字符
. 除换行符和其它Unicode行终止符之外的任意字符
\w 任何ASCII字符组成的单词 , 等价于[a-zA-z0-9]
\W 任何不是ASCII字符组成的单词 , 等价于[^a-zA-z0-9]
\s 匹配的是空格、制表符和其它Unicode空白符
\S 匹配的是非Unicode空白符的字符
\d 任何ASCII数字 , 等价于[0-9]
\D 除了ASCII数字之外的任何字符 , 等价于[^0-9]
[\b] 退格直接量(特例)
/^[\x{4e00}-\x{9fa5}]+$/u 区配中文 /utf-8
组合匹配
[\s\d] 任意空白符或数字
5、重复(尽可能多的匹配)
{n,m}匹配前一项至少n次 , 但不能超过m次{n,}匹配前一项n次或更多次{n}匹配前一项n次?匹配前一项0次或1次 , 也就是前一项是可选的 , 等价于{0,1}+匹配前一项1次或多次 , 等价于{1,}*匹配前一项0次或多次 , 等价于{0,}例子:
/\d{2,4}/匹配2到4个数字/\w{3}\d?/精确匹配三个单词和一个可选的数字 acd1 add a011/\s+Java\s+/匹配前后带有最少一个空格的字符串 "java this java is java javasript "/[^(]*/匹配一个或多个不是左括号的字符注意 * 与 ? 的使用 /a*/ 实际上与字符串 "abcd"匹配 , 因为这个字符串中有 0 个a
6、 非贪婪的重复(尽可能少的匹配
例:当使用 aaa 做为匹配字符串时 ,
/a+/会匹配它的三个字符a/a+?/会匹配只能匹配一个a特殊:当使用aaab做为匹配字符串时
/a+b/匹配整个字符串/a+?b/本来期待匹配ab,但实际上匹配了aaab,这是因为正则表达式总会寻找字符串中第一个可能匹配的位置7、 选择、分组和引用
7.1 分隔选择字符 |/ab|cd|ef/可以匹配字符串 ab,也可以匹配cd,也可以匹配ef/\d{3}|[a-z]{4}/匹配三位数字或者四个小写字母7.2 分隔选择匹配优先次序:从左到右 , 左侧优先/a|ab/匹配字符串ab时 , 匹配上的是a7.3 分组 ()括号()的作用一:
把单独的项组合成表达式
/java(script)?/匹配字符串java,后面可以有script , 也可以没有/(ab|cd)+|ef/匹配字符串ef,也可以匹配字符串ab或cd的一次或多次