正则表达式基础信息
一、基础信息
操作对象:字符串
写法:
var re = /正则表达式/; (推荐写法) 因为直接写//会变成注释,如果没有表达式一般里面写一个a,例如:var re = /a/;
var re = new RegExp('正则表达式');
输出特殊字符
不能输出特殊字符(' / 等) ,需要加 \ 转义,例如:var re = new RegExp('\\b'+sClass+'\\b');
传递参数
描述:当正则需要传参的时候,一定要用全称的写法
写法:var re = new RegExp(参数名);
二、字符含义
1、i —— 不区分大小写
描述:正则表达式默认区分大小写
不区分大小写的方法:在正则的最后加标识 i
写法:
var re = /a/i;
var re = new RegExp('a','i');
2、g——找到所有匹配的字符
描述:正则表达式默认找到匹配的字符就停止查找
找到所有匹配字符的方法:在正则的最后加标识 g
写法:
var re = /a/g;
var re = new RegExp('a','g');
3、+ —— 至少出现一次
描述:如果不确定字符的数量,加上符号 + 就代表字符至少出现一次即可匹配,加在那个字符后面就是哪个字符可有多个
写法:
var re = /a+/;
var str = 'haj123sdk54hask33dkhalsd879'; var re = /\d+/g; // \d代表数字,\d+代表1个,2个,3个……数字都可以匹配。g代表匹配所有的元素 alert( str.match(re) ); //123,54,33,879
4、| ——或
描述:需要获取a或b或c
写法:var re = /a | b | c/;
var re = /菲称|中国船|监视之下/g;
5、^ —— 排除的意思
描述:如果^写在[]里面的话,就代表排除的意思。如果^在正则最开始的位置,就代表起始的意思
写法:
var re = /[^a]/ 代表除了a以外的字符
var re = /^abc/ 代表必须以a开始
var str = 'awc'; var re = /a[^bde]c/; //字符串的第2位只要不是b、d、e就行 alert( re.test(str) ); //true
6、$ —— 以指定字符结束
描述:如果$在正则表达式最后的位置 , 就代表结束的意思
写法:var re = /abc$/ 代表必须以c结束
7、? —— 字符出现0次或1次
写法:var re = /a?/;
8、* —— 字符至少出现0次
写法:var re = /a*/;
9、- —— 在指定范围内的字符都可以匹配
描述:在指定范围内的字符都可以,可以是a-z、A-Z、0-9等
var re = /a[a-z0-9A-Z]c/; //字符串的第二位字符是a-z或者0-9或者A-Z都可以
10、() —— 把正则表达式分组,分为一个个子项
描述:括号里作为一个整体进行操作,类似于算法里的括号,每一个括号代表正则表达式的一个子项
写法:var re = /(第一组)(第二组)/
var re = /(\d+)(-)/g;
11、[]——字符类
描述:括号里有多个字符,字符之间的关系为或者的关系,[]里只代表一个元素,只要匹配了[]里的任意一个字符即可
写法:var re = /a[bde]c/
var str = 'abc'; var re = /a[bde]c/; //字符串的第二位字符在[bde]里存在,是b是d是e都行,所以返回的是true alert( re.test(str) ); //true
12、{}——某字符出现的次数
写法:
a{4,7} : a最少出现4次,最多出现7次
a{4,} : a最少出现4次
a{4} : a正好出现4次
三、转义字符
. —— 任意字符
\. —— 真正的点
var str = 'abc'; var re = /a.c/; //第二位为任何字符都匹配 alert(re.test(str)); //true
\b —— 是否是独立的部分 ( 起始位置,结束位置,空格 )
\B —— 非独立的部分
var str = 'onetwo'; var re = /\bone/; //判断字母o前面是否是独立字符 alert( re.test(str) ); //true,o前面没有东西了,所以是独立字符 var re = /one\b/; //判断字母o后面是否是独立字符 alert( re.test(str) ); //false,e后面还有t,所以不是独立字符
\n —— 换行
\s —— 空格
\S —— 非空格
\d —— 数字
\D —— 非数字
\w —— 字符 ( 包括字母 ,数字,下划线“_” )
\W —— 非字符
\1 —— 重复第1个子项
\n —— 重复第n个子项
var str = 'abca'; var re = /(a)(b)(c)\2/; //重复第二个子项(b),即b alert( re.test(str) ); //false因为字符串的第四个字符是a,不是b
var str = 'ab'; var re = /\w\w/; //alert( re.test(str) );返回true,因为第一个第二个字符都是字母 var re = /(\w)\1/; cc //alert( re.test(str) );返回false,因为第一个字符是a,第二个字符不是a