第四篇、javascript
一、正则表达式
提示:此专题需要多轮复习反复的加深和理解
正则表达式的两种用法:
1)regexp.xxx(string);
2)string.yyy(regexp);
验证用户输入的手机号格式是否合法 var regexp=/^1[3-8]\d{9}$/; var input="15012345678"; console.log(regexp.test(input))
正则表达式主要用于表单验证
1、直接量字符
定义一个正则表达式对象可以使用perl风格的直接量语法
/pattern/attributes
说明
直接量字符串左右不能添加‘或者”(引号)
两个/不能省略
参数pattern是一个正则表达式字符串
参数attribute是一个可选的字符串,可以在“g”,“i”和“m”范围内指定,分别用于指定全局匹配、区分大小写的匹配和多行匹配
2、字符类
所有的单个大小写字母、数字都是一个正则表达式,用以匹配单个字符,这个字符与它本身相同
var regexp=/ipod/; var data='apple ipod is No.123 cool?'; console.log(regexp.test(data));//false var regexp=/ipod/; var data='apple ipod is No.123 cool?'; console.log(regexp.test(data));//true
正则表达式有些字符有特殊的语法含义,是不能直接使用的,必须使用\进行转义后才能使用
. \ / * ? + [ ( ) ] { } ^ $ |
位置匹配
^ 在/[^123]/ 表示匹配除了123的
/^1[123]/ 表示包含123的并且以1开头的
$ 表示以什么结尾
| /[123|456]/ 表示匹配123或者456其中一个
, /[123x,]/ 表示匹配123x中任意一个
\b 表示匹配字符的边界
\B 匹配字符串的非边界 例子:“his history is so” 如果匹配history中的his /[/bhis/B]
3、重复
正则表达式中可以使用如下特殊字符定义字符的出现频次---量词元字符
重复字符 含义 示例 n? 匹配零次或者一次字符n /a?/ n* 匹配零次或者多次字符n /a*/ n+ 匹配一次或者多次字符n /a+/ n{x} 匹配字符n出现x次 /a{3}/ /\d{9}/表示数字出现9次 n{x,y} 匹配字符n出现x到y次 /a{2,4}/ n{x,} 匹配字符n的出现>=x次 /a{3,}/
4、选择、分组和引用
范围选择,用于指定一个匹配的范围
语法 含义 示例 [abc] 匹配指定集合内的任一个字符 /[3458]/ [^abc] 匹配不在指定集合内的任意字符 /[^12679]/ [a-z] 匹配任一个小写字符 /[a-z]/ [0-9] 匹配任一个数字 /0-9/ [A-Z] 匹配任一个大写字符 /A-Z/ [A-z] 匹配大写A到消协z的所有字符, /[A-z]/ 即A-Z[\]^_`a-z /[--籲]/ exp|exp2 使用|进行条件选择 /ex|Ex|post|Post/ (expl) 使用()指定分组 ------子表达式
正则表达式中可以使用如下元字符引用来进行简化
1 语法 含义 示例 2 \d 匹配一个数字 /\d/等价于/[0-9]/ 3 \D 匹配一个非数字 /\D/等价于 /[^0-9]/ 4 \w 匹配一个数字/字母/下划线 /\w/等价于/[0-9a-zA-Z]/ 5 \W 匹配一个非数字/字符/下划线 /\W/等价于/[^0-9a-zA-Z]/ 6 \s 匹配一个空白字符(space) /\s/等价于/[\n\r\t\v\f]/ 7 \S 匹配一个非空白字符 /\S/等价于/[^\n\r\v\t\f]/ 8 . 匹配除了回车和换行符的任何单个字符 /./ 等价于 /[^\n\r]/
分组匹配 ,使用()把多个字符组成一个整体,这样的每个整体都会自动获得1、2、3、...这样的分组
() /(abc){3}/ 表示以abc为一组的匹配3组
/(abc)(xvv)(xx)2/ 表示匹配(abc) (xvv)这两个分组
/(aa)(bb)(cc)/2/ 表示匹配(bb)这个分组
正则表达式分组编号的用法:
1)直接用在正则表达式中
/<(\w+)>.*<\/\1>/
2)调用test()方法之后使用
regexp.test(stuID);
console.log(RegExp.$1);
3)用在string.re[lace()方法中
var data="Tome mary john maria";
var regexp=/(mary|,maria)/ig;
data.replace(regexp,"$1".toUpperCase()); //Tome MARY john MARIA
5、正则表达式中的属性修饰符
/表达式内容/属性修饰符
属性修饰符可以在下面三个范围内选择
1)i 匹配的时候忽略大小写
2)g 执行全局匹配,找到一次匹配后仍然继续,知道结尾
3)m 执行多汗匹配,会影响^(原本只匹配整个字符串的开头)和$(原来只匹配整个字符串结尾)的含义,匹配每一行的开头和结尾