1、什么是正则表达式?
正则表达式RegExp是对象的中文名称,实际上正则表达式就是一一定的字符串的形式,来建立一个规则,这个规则可以用来匹配字符串,检查字符串是否符合这个规则或者字符串中是否存在子字符串符合这个规则
2、创建正则表达式
创建正则表达式的方式有两种
方式一:使用字面量的方式创建正则表达式,使用【//】符号区分正则表达式与字符串的 不同
var patt1 = /[0-9]+/;
方式二:使用对象RegExp对象new实例创建正则表达式
var patt = new RegExp('/[0-9]+/')
3、正则表达式的使用方式
search() 方法使用正则表达式
var str = "Visit Runoob!";
var n = str.search(/Runoob/i);
//使用正则表达式在字符串中查找Runoob,不区分大小写
replace() 方法使用正则表达式
var str = document.getElementById("demo").innerHTML;
var txt = str.replace(/microsoft/i,"Runoob");
//使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :
test()方法搜索字符串指定的值,根据结果并返回真或假:
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null:
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));
Str.match(正则表达式规则)
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/g);
常用的方法是test()方法测试字符串是否满足既定的正则表达式规则
4、正则表达式规则
普通字符表达方式:

非打印字符:

特殊字符:

限定符:

4、常用正则比表达式
4.1、校验数字的表达式
1. 数字:
^[0-9]*$
2. n位的数字:
^\d{n}$
3. 至少n位的数字:
^\d{n,}$
4. m-n位的数字:
^\d{m,n}$
5. 零和非零开头的数字:
^(0|[1-9][0-9]*)$
6. 非零开头的最多带两位小数的数字:
^([1-9][0-9]*)+(.[0-9]{1,2})?$
7. 带1-2位小数的正数或负数:
^(\-)?\d+(\.\d{1,2})?$
8. 正数、负数、和小数:
^(\-|\+)?\d+(\.\d+)?$
9. 有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$
10. 有1~3位小数的正实数:
^[0-9]+(.[0-9]{1,3})?$
11. 非零的正整数:
^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12. 非零的负整数:
^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13. 非负整数:
^\d+$ 或 ^[1-9]\d*|0$
14. 非正整数:
^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15. 非负浮点数:
^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16. 非正浮点数:
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17. 正浮点数:
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18. 负浮点数:
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19. 浮点数:
^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
4.2、特殊匹配规则
1. Email地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
2. 域名:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
3. InternetURL:
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
4. 手机号码:
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
5. 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6. 国内电话号码(0511-4405222、021-87888822):
\d{3}-\d{8}|\d{4}-\d{7}
7. 身份证号(15位、18位数字):
^\d{15}|\d{18}$
8. 短身份证号码(数字、字母x结尾):
^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):
^[a-zA-Z]\w{5,17}$
11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

本文详细介绍了JavaScript中的正则表达式,包括创建正则表达式的方法、常用的正则表达式使用方式如search(), replace(), test()和exec(),以及正则表达式规则和常用正则表达式实例,如数字、邮箱、域名和电话号码的验证。"
89048873,8160183,深入理解JavaScript:函数柯里化详解,"['JavaScript', '函数编程', '高级技巧']
153

被折叠的 条评论
为什么被折叠?



