正则表达式是有规律的表达式,在js中常用来表单校验。
1、创建正则表达式
- 构造函数 RegExp
var reg1 = new RegExp(/111/);
- 正则的字面量
var reg2 = /111/;
2、正则表达式中的方法
test():用来测试字符串是否符合正则表达式的规律,返回true / false。
replace() :replace 方法第一个参数可以写正则表达式
var str = " 123AD asadf asadfasf adf ";
// 替换掉字符串中的所有空白
var str2 = str.replace(/\s/g, ""); // str2 :"123ADasadfasadfasfadf"
// 将所有的ad/AD替换成xx
//var str3 = str.replace(/ad|AD/g, "yy");
var str3 = str.replace(/ad/gi, "yy"); // i : ignore 忽略大小写
console.log(str3);
/\g:全局匹配global
/\i :忽略大小写ignore
3、 正则表达式中的优先级
| :或 ,优先级最低
() : 优先级最高
console.log(/(f|b)oot/.test("foot")); // true
console.log(/(f|b)oot/.test("boot")); // true
console.log(/(f|b)oot/.test("fb")); // false
4、 正则表达式中的元字符
- \d:匹配一个数字 0-9
console.log(/\d/.test("a")); // false
console.log(/\d/.test("a1")); // true
- \D:匹配非数字
console.log(/\D/.test("a")); // true
console.log(/\D/.test("a1")); // true
console.log(/\D/.test("1")); // false
- \w:匹配单词字符 a-z A-Z 0-9 _
console.log(/\w/.test("a")); // true
console.log(/\w/.test("1")); // true
console.log(/\w/.test(" ")); // false
console.log(/\w/.test("$%^&*")); // false
- \W:匹配非单词字符
console.log(/\W/.test("a")); // false
console.log(/\W/.test("1")); // false
console.log(/\W/.test(" ")); // true
console.log(/\W/.test("$%^&)); // true
- \s:匹配不可见字符 空格 换行(\n) 制表符(\t)
console.log(/\s/.test("a")); // false
console.log(/\s/.test(" ")); // true
console.log(/\s/.test("1\na")); // true
console.log(/\s/.test("1")); // false
- \S:匹配可见字符
console.log(/\S/.test("a")); // true
console.log(/\S/.test(" ")); // false
console.log(/\S/.test("1\na")); // true
console.log(/\S/.test("1")); // true
- . :匹配除了换行和回车的任意字符
console.log(/./.test("abc")); // true
console.log(/./.test("\n")); // false
console.log(/./.test(" ")); // true
注:若只匹配小数点 ,需要转义 .
console.log(/\./.test("a")); // false
console.log(/\./.test("1.2")); // true
5、字符类元字符
[]:表示一个字符的位置,在[]里面可以写上能够出现的字符。
在[]中 - 代表范围; ^ 代表非。
// [abc] ==> 匹配a或者是b或者是c ,本身自带或的含义
// [0-9] ==> 匹配0-9中的任意一个
// [a-z] ==> 匹配a-z中的任意一个
// [a-zA-Z0-9] ==> 匹配 a-z A-Z 0-9 其中任意一个字符
6、边界类元字符
^ 表示开头 ;$ 表示结束。
//^ $ 一起使用实现精确匹配
console.log(/^chuan$/.test("chuan")); // true
console.log(/^chuan$/.test("chuanchuan")); // false
7、量词类元字符
* :次数是0次或0次以上 ;相当于{0,}
+ :次数是1次或1次以上 ;相当于{1,}
? : 次数是0或者1 ;相当于{0,1}
{m} :次数是m次
{m,} :次数是m次以上
{m,n} :次数是m到n之间
// 匹配 没有a 或者一个a 或者是多个
console.log(/^a*$/.test("")); // true
console.log(/^a*$/.test("a")); // true
console.log(/^a*$/.test("aa")); // true
console.log(/^a*$/.test("abc")); // false
// +
console.log(/^a+$/.test("")); // false
console.log(/^a+$/.test("a")); // true
console.log(/^a+$/.test("aa")); // true
console.log(/^a+$/.test("abc")); // false
// ? 匹配没有a 或者是一个a
console.log(/^a?$/.test("")); // true
console.log(/^a?$/.test("a")); // true
console.log(/^a?$/.test("aa")); // false
console.log(/^a?$/.test("abc")); // false
// {}
console.log(/chuan{2}/.test("chuanchuan")); // false
console.log(/(chuan){2}/.test("chuanchuan")); // true
console.log(/chuan{2}/.test("chuann")); // true
注:量词是就近修饰的。