正则表达式
-正则表达式(Regular Expression)RegExp
-什么是正则表达式? 正则式
正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你查询的内容
正则表达式可以是一个简单的字符,或者是一个更复杂的模式
正则表达式可以用于所有文本搜索和文本替换的操作
由一个字符序列形成的搜索模式,用来匹配
-正则表达式的模式:
1.正则表达式的范围
2.正则表达式的元字符
3.正则表达式的量词
正则表达式的创建
1.字面量 /表达式/修饰符
var reg1=/abc/g; // 匹配一个字符串中是否包含abc global(全局)对前局进行一个匹配
console.log(reg1);
console.log(typeof reg1); // object
2.new关键字 构造函数
// var reg2=new RegExp(“表达式”,“修饰符”)
var reg2=new RegExp(“abc”.“g”)
console.log(reg2);
正则表达式的属性和方法
var reg1=/abc/g;
//constructor 对创建正则表达式对象的函数的应用
console.log(reg1.constructor);
//prototype 向对象添加属性和方法 原型
console.log(RegExp.prototype);
var str=“abcabcabc”;
var str2=“ABCABCABC”;
方法
exec() 检索字符串中指定的值,返回找到的值,并确定其位置
console.log(reg1.exec(str));
console.log(reg1.exec()str2); // null
test() 检索字符串中指定的值 返回true或false
console.log(reg1.test(str)); //true
console.log(reg1.testc(str2));// false
toString() 返回正则表达式的字符串
console.log(reg1.toSingSt());
正则表达式的修饰符
//var reg1=/表达式/修饰符
//var reg2=new RegExp(“表达式”,“修饰符”)
var reg1=/a/;
var str1=“abcabcabc”;
var str2=“ABCABCABC”;
console.log(reg1.test(str1)); //true
console.log(reg1.test(str2)); // false
// i 忽略大小写 ignoreCase
var reg2=/a/i;
console.log(reg2.test(str2));// true
//验证码 忽略大小写 Ab3G
var yzm=/Ab3G/;
var yzm2=“ab3g”;
if(yzm.test(yzm2)){
console.log(‘验证码正确’);
}else{
console.log(“验证码错误”);
}
// g 全局匹配 global
console.log(str1.replace(reg1.“H”)); //Hbcaabcabc
var reg3-/a/g;
console.log(str1.replace(reg3.“H”)); //HbcHbcHbc
console.log(str2.replace(reg3.“H”));
// m 多行匹配 multiline
var str3=“abc \n abcabc”;
var reg5=/a/gm;
console.log(str3);
console.log(str3.replace(reg5,“M”));
正则表达式的属性
var reg1=/a/;
// constructor 对创建正则表达式对象的函数的应用
console.log(reg1.constructor);
//prototype 向对象添加属性和方法 原型==
console.log(RegExp.prototype);
// global 判断是否设置了"g"修饰符
// ignoreCase 判断是否设置了“i”修饰符
// multiline 判断是否设置了“m”修饰符
console.log(reg1.global);
console.log(reg1.ignoreCase);
console.log(reg1.multiline);
source 返回正则表达式的匹配模式 表达式
console.log(reg1);
console.log(reg1.source);
lastIndex 用于规定下次匹配的起始位置
var str=“abcabcabc”;
//console.log(reg1.test(str));
if (reg1.test(str)){
console.log(reg1.lastIndex);
}
while(reg1.test(str)){
console.log(reg1.lastIndex);
}
JS正则表达式的模式之范围
// [字符族] 查找每个范围内的字符
var reg1=/abc/g;
console.log(reg1.test(“abcdefg”));// true
// [abc] 查找[]之间的任何字符
var reg2=/[abc]/;
console.log(reg2.test(“a”)); //true
console.log(reg2.test(“ab”)); //true
console.log(reg2.test(“abjczdcs”)); //true
//[^abc] 查找任何不在[]之间的字符 排除
var reg3=/[^abc]/;
console.log(reg3.test(“a”)); // false
console.log(reg3.test(“acb”)); //false
console.log(reg3.test(“gdehbd”)); //true
[0-9] 查找任何从0到9的数字
var reg5=/st[0-9]/;
console.log(reg5.test(“1234567890”));
//[a-z]查找任何从小写a到小写z的字符
//[A-Z]查找任何从大写a到大写z的字符
//A-z]查找任何从大写a到小写z的字符
// (red|green|blue) 查找指定的选项或
var reg6=/(a|b|c)/;
var reg7=/abc/;
var reg8=/([a]|[b]|[c])/;
元字符
++**元字符是含有特殊含义的字符 \ **++
// . 查找单个字符 除了换行和行结束符以外的任意字符
var reg1=/./;
console.log(reg1.test(“abcd”));// true
// \w 查找数字、字母及下划线
// \W 查找非单词字符
var reg2=/\w/;
console.log(reg2.test(“hahasd38948”));// true
console.log(reg2.test(“哈哈”)); // false
// \d 查找数字
// \D 查找非数字字符
var reg3=/\d/;
console.log(reg2.test(“hahasd38948”));// true
正则表达式的模式之量词 限定符{}
// n{X} 匹配包含 X 个 n(连续)的序列的字符串
例如: /a{2}/ 不匹配"candy,"中的 “a”,但是匹配“caandy,”中的两个 “a”,且匹配“caaandy”中的前两个“a”
var reg1=/a{3}/;
console.log(reg1.test(“a”)); true
console.log(reg1.test(“aa”)); true
console.log(reg1.test(“aaab”)); true
console.log(reg1.test(“abaa”)); false
console.log(reg1.test(“aaaa”)); true
console.log(“aaaa”.replace(reg1.“A”)); Aaa
// n{X,Y} X和Y 为正整数。前面的模式 n 连续出现至少X次,至多Y次匹配
例如 /a{1,3}/ 不匹配 “cndy,” ,匹配 “candy,” 中的 “a”, “caandy,” 中的两个 “a”,匹配 "caaaaaandy"中的前三个a. 注意,当匹配"caaaaaandy"时,即使原始字符串拥有更多的a,匹配的也是 “aaa”
// n{X,} X是一个正整数。前面的模式 n 连续出现至少X次时匹配
例如 /a{2,}/ 不匹配 “candy” 中的 a ,但是匹配 “caandy” 和 "caaaaaandy"中的所有的a
n+ 匹配任何包含至少一个 n 的字符串 n{1,}
n* 匹配任何包含零个或多个 n 的字符串 n{0,}
n? 匹配任何包含零个或一个 n 的字符串 n{0,1}
JS正则表达式的模式之定位符
==n
匹
配
任
何
结
尾
为
n
的
字
符
=
=
v
a
r
r
e
g
1
=
/
a
b
c
匹配任何结尾为 n 的字符== var reg1=/abc
匹配任何结尾为n的字符==varreg1=/abc/; // 匹配以abc结尾的字符
console.log(reg1.test(“abcabc”));
^n 匹配任何开头为 n 的字符串
var reg2=/^abc/; // 匹配以abc为开头的字符串
console.log(reg2.test(“cabcabc”));
?=n 匹配任何其后紧接指定字符串 n 的字符串
?!n 匹配任何其后没有紧接指定字符串 n 的字符串