JavaScript正则表达式的创建
1.字面量 /表达式/修饰符
var reg1=/abc/g;//
匹配一个字符串中是否包含abc
g:global(全局)
console.log(reg1);
console.log(typeof reg1);//object
2.new关键字 构造函数
var reg2=new
RegExp("表达式","修饰符")
var reg2=new RegExp("abc","g");
console.log(reg2);
JavaScript正则表达式的方法
var reg1=/a/;
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
if(!reg1.exec(str2)){
console.log("没有找到匹配项")
}
test() 检索字符串中指定的值。返回true或false
console.log(reg1.test(str));//true
console.log(reg1.test(str2));//false
toString() 返回正则表达式的字符串
console.log(reg1.toString());
JavaScript正则表达式的修饰符
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/i;
var yzm2="ab3g";
if(yzm.test(yzm2)){
console.log("验证码正确")
}else{
console.log("验证码错误")
}
g 全局匹配 global
console.log(str1.replace(reg1,"H"));//Hbcabcabc
var reg3=/a/gi;
console.log(str1.replace(reg3,"H"));//HbcHbcHbc
console.log(str2.replace(reg3,"H"));
m 多行匹配 multiline
var str3="abc\nabcabc";
var reg5=/a/gm;
console.log(str3.replace(reg5,"M"));
JavaScript正则表达式的属性
var reg1=/a/igm;
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);
}
JavaScript正则表达式的模式之范围
[字符族] 查找每个范围内的字符
var reg1=/acb/;
console.log(reg1.test("abcdefg"));//false
[abc] 查找[]之间的任何字符
var reg2=/[acb]/;
console.log(reg2.test("a"));//true
console.log(reg2.test("ab"));//true
console.log(reg2.test("abdhehekeku"));//true
[^abc] 查找任何不在[]之间的字符。 排除
var reg3=/[^acb]/;
console.log(reg3.test("a"));//false
console.log(reg3.test("acb"));//fasle
console.log(reg3.test("gghkyunguym,jkyuh"));//true
[0-9] 查找任何从 0到9的数字
var reg4=/[0-9]/;
console.log(reg4.test("6789"));//true
var reg5=/[0-5]/
console.log(reg5.test("6789"));//false
[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])/;
console.log(reg6.test("hello a"));//true
console.log(reg7.test("hello a"));//false
JavaScript正则表达式的模式之元字符
拥有特殊含义的字符
. 查找单个字符,除了换行和行结束符以外的任意字符
var reg1=/./;
console.log(reg1.test("abcdefg"));//true
console.log(reg1.test("122345678"));//true
console.log(reg1.test("老韩"));//true
console.log(reg1.test("\n"));//false
\w 查找数字、字母及下划线。
\W 查找非单词字符。
var reg2=/\w/;
// var reg2=/\W/;
console.log(reg2.test("hagag0393838_"));//true
console.log(reg2.test("老韩"));//false
\d 查找数字。
\D 查找非数字字符。
var reg3=/\d/;
var reg3=/\D/;
console.log(reg3.test("1234567890"));//fasle
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NULL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
十六进制 0123456789ABCDEF
console.log("一".charCodeAt(0));//19968 十进制
中文 [\u4e00 -\u9fef]
4e00 0 0 14161616 4161616*16
var reg6=/[\u4e00-\u9fef]/;
console.log(reg6.test("韩"))
JavaScript正则表达式的模式之量词
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
// n{X,Y} X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
// 例如,/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的两个 "a",匹配 "caaaaaaandy" 中的前面三个 "a"。注意,当匹配 "caaaaaaandy" 时,即使原始字符串拥有更多的 "a",匹配项也是 "aaa"。
var reg2=/a{3,5}/;
console.log(reg2.test("a"));
console.log(reg2.test("aa"));
console.log(reg2.test("aaa"));
n{X,} X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
例如,/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。
n+ 匹配任何包含至少一个 n 的字符串。 n{1,}
n* 匹配任何包含零个或多个 n 的字符串。 n{0,}
n? 匹配任何包含零个或一个 n 的字符串。 n{0,1}
var regx=/a+/;
console.log("aaaaa".match(regx));
var regy=/a\+/;
console.log(regy.test("a+"));
JavaScript正则表达式的模式之定位符
n$ 匹配任何结尾为 n 的字符串
var reg1 = /abc$/; //匹配以abc结尾的字符串
console.log(reg1.test("abcabc"));
^n 匹配任何开头为 n 的字符串
var reg2 = /^abc/;
匹配以abc开头的字符串
console.log(reg2.test("cabcabc"));
var regy = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([\w]+)\.)+([A-z])+$/
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。
var reg8=/ab(?=a)/gi;
var reg9=/ab(!=a)/gi;
console.log("abacabc".match(reg8));
console.log("abcabc".match(reg9));