正则表达式(Regular Expression)是一个描述字符模式的对象。ECMAScript 的 RegExp 类表示正则表达式,而 String 与 RegExp 都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。
正则表达式主要用来验证客户端的输入数据。用户填写完表单单击按钮之后,表单数据就会被发送到服务器,在服务器通常会使用 PHP 和 ASP.NET 等服务器脚本对其进行进一步的处理。在客户端验证表单数据,可以节约大量的服务器端的系统资源,并且提供了更好的用户体验。
元字符 |
说明 |
实例 |
. |
匹配当前任意字符1次,换行除外 |
实例
|
var reg=/g..gle/;
var str1="ggle";
var str2="gogle";
var str3="google";
var str4="gooogle";
var str5="g**gle";
var str6="g55gle";
alert(reg.test(str1)); // 输出 false
alert(reg.test(str2)); // 输出 false
alert(reg.test(str3)); // 输出 true
alert(reg.test(str4)); // 输出 false
alert(reg.test(str5)); // 输出 true
alert(reg.test(str6)); // 输出 true
|
* |
匹配前一个字符内容的0次、1次或多次 |
实例
|
var reg=/go*gle/;
var str1="ggle";
var str2="gogle";
var str3="goooogle";
var str4="g33gle";
alert(reg.test(str1)); // 输出 true ,指定字符出现0次,匹配成功
alert(reg.test(str2)); // 输出 true ,指定字符出现1次,匹配成功
alert(reg.test(str3)); // 输出 true ,指定字符出现4次,匹配成功
alert(reg.test(str4)); // 输出 false,指定字符无法匹配,匹配失败
|
+ |
匹配前一个字符内容的1次或多次 |
实例
|
var reg=/go+gle/;
var str1="ggle";
var str2="gogle";
var str3="goooogle";
alert(reg.test(str1)); // 输出 false,指定字符出现0次,匹配失败
alert(reg.test(str2)); // 输出 true ,指定字符出现1次,匹配成功
alert(reg.test(str3)); // 输出 true ,指定字符出现4次,匹配成功
|
? |
匹配前一个字符内容的0次或1次 |
实例
|
var reg=/go?gle/;
var str1="ggle";
var str2="gogle";
var str3="goooogle";
alert(reg.test(str1)); // 输出 true ,指定字符出现0次,匹配成功
alert(reg.test(str2)); // 输出 true ,指定字符出现1次,匹配成功
alert(reg.test(str3)); // 输出 false,指定字符出现4次,匹配失败
|
{M} |
匹配前一个字符内容的重复次数为M次(t=M) |
实例
|
var reg=/go{2}gle/;
var str1="gogle";
var str2="google";
var str3="goooogle";
alert(reg.test(str1)); // 输出 false,指定字符出现0次,匹配失败
alert(reg.test(str2)); // 输出 true ,指定字符出现2次,匹配成功
alert(reg.test(str3)); // 输出 false,指定字符出现4次,匹配失败
|
{M,} |
匹配前一个字符内容的重复次数为 大于或等于M次(t≥M) |
实例
|
var reg=/go{2,}gle/;
var str1="gogle";
var str2="google";
var str3="goooogle";
alert(reg.test(str1)); // 输出 false,指定字符出现1次,匹配失败
alert(reg.test(str2)); // 输出 true ,指定字符出现2次,匹配成功
alert(reg.test(str3)); // 输出 true ,指定字符出现4次,匹配成功
|
{M,N} |
匹配前一个字符内容的重复次数为 M到N次(M≤t≤N) |
实例
|
var reg=/go{2,3}gle/;
var str1="gogle";
var str2="google";
var str3="gooogle";
var str4="goooogle";
alert(reg.test(str1)); // 输出 false,指定字符出现1次,匹配失败
alert(reg.test(str2)); // 输出 true ,指定字符出现2次,匹配成功
alert(reg.test(str3)); // 输出 true ,指定字符出现3次,匹配成功
alert(reg.test(str4)); // 输出 false,指定字符出现4次,匹配失败
|
() |
合并整体匹配,并放入内存,使用 \1 \2 ……依次读取 |
实例
|
// ===========================================================================
var reg=/2000(.*)05(\1)15/; // \1 表示自身内容与第一个括号()内的内容相同
var str1="2000-05-15";
var str2="2000/05/15";
var str3="2000-05.15";
alert(reg.test(str1)); // 输出 true ,日期连字符一致,匹配成功
alert(reg.test(str2)); // 输出 true ,日期连字符一致,匹配成功
alert(reg.test(str3)); // 输出 false,日期连字符不同,匹配失败
// ===========================================================================
var reg=/#(.*)#,%(.*)%/;
var str="lesson1:#html5#,%css3%";
reg.test(str);
alert(RegExp.$1); // 输出 html5
alert(RegExp.$2); // 输出 css3
alert(str); // 输出 lesson1:#html5#,%css3%
alert(str.replace(reg,"$2,$1")); // 输出 lesson1:css3.html5
|
| |
选择匹配 |
实例
|
var reg=/google|baidu/;
var str1="google";
var str2="baidu";
var str3="bing";
alert(reg.test(str1)); // 输出 true
alert(reg.test(str2)); // 输出 true
alert(reg.test(str3)); // 输出 false
|
^ |
匹配字符串首部内容 |
实例
|
var reg1=/google/;
var reg2=/^google/;
var str="site:google";
alert(reg1.test(str)); // 输出 true ,字符串中有 google 就能匹配成功
alert(reg2.test(str)); // 输出 false,字符串必须 google 开始才能匹配成功
|
$ |
匹配字符串尾部内容 |
实例
|
var reg1=/google/;
var reg2=/google$/;
var str="google.com";
alert(reg1.test(str)); // 输出 true ,字符串中有 google 就能匹配成功
alert(reg2.test(str)); // 输出 false,字符串必须 google 结尾才能匹配成功
|
名称 |
描述 |
实例 |
.match(reg) |
匹配字符串,匹配到返回结果数组,否则返回 null |
实例
|
var reg=/hello/g;
var str="hello! hello everyone!";
alert(str.match(reg)); // 输出数组 hello,hello
|
.search(reg) |
匹配字符串,匹配到返回字符串位置,否则返回 -1 |
实例
|
var reg=/hello/g;
var str="hey! hello! hello everyone!";
alert(str.search(reg)); // 输出 5
alert(str.search(reg)); // 输出 5
这个函数有个特性,匹配到就返回,不会再继续下去,所以模式修饰符 g 也就没有用了。
|
.split(reg) |
分割字符串,匹配到返回字符串按 reg 拆分的数组,否则返回原字符串 |
实例
|
var reg=/!/g;
var str="stay hungry!stay foolish!";
alert(str.split(reg)); // 输出长度为 3 数组 stay hungry,stay foolish,
|
.replace(reg,str) |
替换字符串,匹配到则返回用 str 替换 reg 后的字符串,否则返回原字符串 |
实例
|
var reg=/hello/g;
var str="hello! hello everyone!";
alert(str.replace(reg,"hey")); // 输出 hey! hey everyone!
alert(str); // 输出 hello! hello everyone!
|