1.作用
1.1.测试字符串的某个模式(电话号码模式或一个信用卡号码).
1.2.替换文本.
1.3.根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字
2.语法 由普通字符(例如字符 a到 z)以及特殊字符(称为元字符)组成的文字模式
1.量词
? 零次或一次
* 零次或多次
+ 一次或多次
{n}匹配n次 {n,}至少n次 {n,m} n到m次 (m>n).
2.预定义类(系统已经做好了的.)
\s 匹配一个空白字符 [ \n\r\t\f\x0B]
\w 数字,字母,下划线 [a-zA-Z0-9_]
\d 数字 [0-9]
\S 匹配一个非空白字符 [^ \n\r\t\f\x0B]
\W 非数字,字母,下划线 [^a-zA-Z0-9_]
\D 非数字 [^0-9]
3.选项标志 可以组合使用.
g 全文查找.
i 忽略大小写.
m 多行查找.
4.其他
\ 转义字符
^ 匹配输入字符串的开始位置. [^ ]取反.
$ 匹配输入字符串的结束位置.
. 一个任意字符.
5.两种声明方式
1,new 一个RegExp
var reg = new RegExp(); RegExp是一个对象,和Array一样
var reg = new RegExp("a","gi"); 匹配所有的a或A
2,字面量的声明方式/\d+/ /[\u4e00-\u9fa5]{2,}/验证汉字
3.正则表达式对象的方法及使用
1.test,返回一个 Boolean值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。 reg.test(str);
2.exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。[只要匹配的到的话就直接取出bin返回]reg.exec(str);
3.compile,把正则表达式编译为内部格式,从而执行得更快。
4.match,它就是将所有匹配的内容,以数组的形式全部返回.str.match(reg);
5.元字符匹配正则表达式本身时,必须对这些元字符转义. //????( [ { \ ^ $ | ) ? * + .
var re = /\?/;//将匹配?
re = new RegExp("\\?");//正确,将匹配?//双重转义
脱字符 ^,$ var reg = /^as/gi;//^表示必须要以as开头.
6.简单类(字符类) var re = /[abc123]/;//将匹配abc123这6个字符中一个只要有一个就可以了
7.反向类 re = /[^abc]/;//将匹配除abc之外的一个字符
8.范围类 re = /[a-z]/;//将匹配小写a-z 26个字母
9.组合类 re = /[a-z0-9A-Z_]/;//将匹配字母,数字和下划线
10.预定义类. \s,\S \w,\W \d,\D
分组 var reg = /^([a-z]+)(\s+)\d+/;
创建的两种方式
1.var reg = new RegExp('as','gi');
2.var reg = /as/gi;
其他
1.replace() 替换 str.replace(/^-+/g,'*') str.replace(/\s+/g,'')去空格.
2.split() 拆分 str.split(/[^\d]/)对数字进行拆分.
3.search(); 找位置str.search(/\d/),找数字出现的位置,
4.str.indexOf(1) 找位置 //不能放正则表达式
4.贪婪量词与惰性量词
1.贪婪量词:如果是整个匹配就直接将全部的返回,要是整体不匹配就从后往前匹配,直到碰到不匹配的,
就将匹配到的返回,继续匹配剩下的.(+,?,*,{n},{n,},{n,m});
var str = "abb#asdfdbbbsaiouisbbb";
var reg1 = /\w+bbb/; //\w+bbb表示一个或多个字母或数字,下划线加上bbb.
//alert(reg1.exec(str)+"|"+"\n"+str.match(reg1));//asdfdbbbsaiouisbbb //匹配了继续匹配剩下的.
2.惰性量词:???它首先将第一个字符当成一个匹配,如果成功则退出,如果失败,则测试前两个字符,
依些增加,直到遇到合适的匹配为止.(+?,??,*?,{n}?,{n,}?,{n,m});
var str = "absdbas*dfdbbbsaisdfouisbbb";
var reg1 = /\w+?bbb/; //-匹配到了就不在匹配了
//alert(reg1.exec(str)+"|"+"\n"+str.match(reg1));//dfdbbb