正则表达式(regex 、regex):
作用:匹配字符串
组成:由元字符或任意限定字符
元字符(特殊字符也可叫限定符):
. 表示除了\n以外的任意的一个字符 //"fdsfs238"
[ ] 表示范围 // [1-7]表示的是1到7之间的任意的一个数字
另一个意义:去除元字符意义 // [ . ] 就表示一个.
[a-z]表示的是:所有的小写的字母中的任意的一个
[A-Z]表示的是:所有的大写的字母中的任意的一个
[a-zA-Z]表示的是:所有的字母的任意的一个
[0-9a-zA-z]表示的是:所有的数字或者是字母中的一个
| 或 [0-9]I[a-z] 表示的是要么是一个数字,要么是一个小写的字母
( ) 分组提升优先级 从最左边开始计算 (()(())),四组,一个左括号分一组
限定符(限定前面表达式出现的次数):
* 表示前面的表达式出现了0次到多次 // [a-z][0-9]* 任意一个小写字母中的后面 数字出现0次或多次
+ 表示前面的表达式出现了1次到多次 // [a-z][9]+ 任意一个小写字母后面最少一 个9,或者多个"fesfewww9fefds”
? 表示前面的表达式出现了0或1次,最少是9次,最多1次,另一个金义:阻止贪婪模式[4][a-z]? "1231234ij"
另一个含义:阻止贪婪模式 ,多选一 [4][a-z]? "1231234ij"
{ } 自定义前面表达式出现的次数 { 0,10} 0到10次 {10} 出现10次
^ 表示取反,在括号里边 [^0-9] 非数字
表示以什么开始 ^[A-Z] 以大写字母开头
$ 表示以什么结束 [A-Z][0 -9]$ 以数字结束
^[A-Z][a-z]$ //严格模式,必须是 一个大写字母开头,一个小写字母结束。
(不严格模式,字符串只要有与表达式匹配就可以通过)
\d 任意一个数字
\D 任意一个数字以外的字符
\s 任意一个空白符
\S 非空白符
\w 非特殊符号(字母、数字、下划线)
\W 特殊符号
\b 单词边界
//g 全局模式
//i 忽略大小写
身份证15/18位:
( [1-9] [0-9]{14}) ([0-9]{ 2} [ 0-9xX])?
座机:
010-88888888
0111-88888888
[0-9]{3,4} [ -][0-9]{8}
\d{3,4}[ - ] \d{8}
手机号码:
邮箱:
[0-9a-zA-Z_.-]+[@][A-Za-z0-9_.-]+([.][a-zA-Z]){1,2}
中文:[\u4e00-\u9fa5]
escape( ) 中文编码
unescape( ) 解码
创建正则表达式对象:
一、通过构造函数(RegExp(/ 表达式 /)) //RegExp(" \表达式"),需要转义
二、通过字面量
var reg = / 表达式 /;
正则对象.test()方法,判断字符串是否匹配某个正则表达式
var reg = / 表达式 /;
reg.test(字符串) 返回一个布尔值,如果字符串中有与正则匹配的返回ture ,否则false
正则对象 exec ()方法 ,寻找匹配的字符串
var reg = / 表达式/ ;
reg.exec( 字符串) 返回一个与正则表达式匹配的数组,获取的内容要循环遍历
字符串 match()方法 , 寻找匹配的字符串:
var str = ''语文:95,数学:90,英语:75 "; str.match(/[0-9]{2}/g) 返回内容是95,90,75
str.match(/正则表达式 /g) 返回一个与正则表达式匹配的数组,g表示全局模式
字符串 replace()方法:
str .replace (/正则表达式/ g, 替换内容 字符串或函数);
提取部分内容(分组()):
var str = [2011-11-11]
var arr = str.match(/(\d{4})[-] (\d{2}) [-] (\d{2})/)
console.log(RegExp($2)) ; // 输出月份
判断真数组还是假数组, 看能否调用Array. protype的方法