1、通过new去声明正则表达式
第一个参数:正则表达式的主体 字符串
第二个参数:修饰符
【注】修饰符没有顺序
2、省略new运算符去声明正则表达式
3、通过常量赋值
<script>
//var box1 = new RegExp("hello","ig");
//var box1 = RegExp("hello","ig");
var box1 = /hello/ig;
alert(box1);
</script>
正则表达式方法
正则表达式对象只有两个方法
test
格式:正则.test(字符串)
功能:在字符串中匹配这个正则是否存在
返回值:如果匹配成功返回true,匹配失败返回false
exec
格式:正则.exec(字符串)
功能:在字符串中匹配这个正则是否存在
返回值:返回匹配到的串,匹配成功,返回一个装有字符串的数组
匹配失败,返回null
正则.test
(字符串)
<script>
var str = "how aRe you";
var box = /are/i;
alert(box.test(str));
</script>
正则.exec
(字符串)
<script>
var str = "how aRe you";
var box = /are/i;
alert(box.exec(str));
</script>
字符串的函数:
match()
格式:字符串.match(正则)
功能:在字符串匹配是否有符合正则表达式
返回值:匹配成功,返回装有匹配到子串的数组
匹配失败,返回null
replace()
格式:字符串.replace(oldStr/正则,newStr);
功能:用newStr将oldStr替换
返回值:替换成功的新字符串
split()
格式:字符串.split(分割符/正则);
功能:用分割符将原字符串进行分割
返回值:分割剩下的子串组成的数组
search()
格式:字符串.search(子串/正则)
功能:找到符合条件的子串第一次出现的位置
返回值:
如果找到,返回>=0的下标
否则,返回-1
格式:字符串.match(正则)
<script>
var str = "how are Are you";
var box = /are/ig;
alert(str.match(box));
</script>
格式:字符串.replace(oldStr/正则,newStr);
<script>
var str = "how are Are you";
var newStr = str.replace(/are/ig,"*");
alert(newStr);
</script>
格式:字符串.split(分割符/正则);
<script>
var str = "how are Are you";
var newStr = str.split(/are/i);
alert(newStr);
</script>
格式:字符串.search(子串/正则)
<script>
var str = "how are Are you";
var newStr = str.search(/are/ig);
alert(newStr);
</script>
正则——元字符
元字符: 在正则表达式中有特殊含义的字符
单个数字和字符的元字符
. 匹配单个的任意字符
[范围] 匹配单个范围内的字符
[0-9]
[a-zA-Z0-9_] 匹配单个的数字、字母、下划线
[^范围] 匹配任意一个除括号范围内的字符
[^0-9] 匹配任意一个非数字字符
\w 匹配单个的数字、字母、下划线 等价于[a-zA-Z0-9_]
\W 匹配单个的非数字、字母、下划线
\d 匹配单个数字 等价于[0-9]
\D 匹配单个非数字 等价于[^0-9]
重复字符 x(任意的单个字符)
x? 匹配0个或者1个x
x+ 匹配至少一个x字符
x* 匹配任意个x字符
x{m,n} 匹配至少m个,最多n个x字符,包括n
x{n} 必须匹配n个x字符
(xyz)+ 小括号括起来的部分是当做单个字符处理
<script>
var str = "g_ogle";
var box = /g.ogle/;
alert(box.test(str));
</script>
<script>
var str = "g1ogle";
var box = /g[a-zA-Z0-9_]ogle/;
alert(box.test(str));
</script>
<script>
var str = "g%ogle";
var box = /g[a-zA-Z0-9_]ogle/;
alert(box.test(str));
</script>
<script>
var str = "g1ogle";
var box = /g\wogle/;
alert(box.test(str));
</script>
<script>
var str = "goo123le";
var box = /goo\d+le/;
alert(box.test(str));
</script>
<script>
var str = "goo123le";
var box = /goo\d{3}le/;
alert(box.test(str));
</script>
<script>
var str = "googabcabcle";
var box = /goog(abc)+le/;
alert(box.test(str));
</script>
<script>
var str = "goog\nle";
alert(str);
var box = /goog\sle/;
alert(box.test(str));
</script>
只需要记前面两个
就行了
<script>
var str = "google da";
var box = /^google/;
alert(box.test(str));
</script>
<script>
var str = "google da";
var box = /google$/;
alert(box.test(str));
</script>
修饰符
i 忽略大小写
g 全局匹配
m 换行匹配
【注】如果在字符串,遇到换行,重新开始计算行首
<script>
var str = "1、bai123du\n2、go123le\n3、b123ing";
var box = /^\d/gm;
alert(str.replace(box,"*"));
</script>
正则练习
(1)文件是否是压缩包
zip rar gz
转义字符:
\.代表本来.字符的意思
\*代表本来*字符的意思
<script>
var box = /^\w+\.(zip|rar|gz)$/;
alert(box.test("hello.zip"));
</script>
(2)验证是否是正确的手机号码
var box = /^1\d{10}$/;
(3)验证是否是正确的身份证号码
var box = /^[1_9]\d{16}(\d|x)$/;
(4)验证字符串是否是纯中文
<script>
var box = /^[u4e00-\u9fa5]+$/;
alert(box.test("南极"));
</script>