正则表达式的规则
一个具有特殊意义的字符串。
正则表达式在多种语言中都可以使用,
如:在 Java 中可以用正则表达式,在JavaScript 中也可以使用正则表达式。
\d 数字
\D 非数字
\w 单词:a-zA-Z0-9_ //注意包括下划线
\W 非单词
. 通配符,匹配任意字符
{n} 匹配 n 次
{n,} 大于或等于 n 次
{n,m} 在 n 和 m 之间
- 1~n 次
- 0
n 次1 次
? 0
^ 匹配开头
$ 匹配结尾
[13579] 匹配 1 或 3 或 5 或 7 或 9,即这 5 个数字之一
[0-9] 匹配 1 到 9,即 0,1,2,3,4,5,6,7,8,9 中的数字之一
正则表达式的创建方式
方式一
var reg = new RegExp("正则表达式");
说明:正则表达式在 JS 中是一个对象。Regular Expression。
方式二
var reg = /正则表达式/;
说明:以/开头,以/结尾,中间是正则表达式。
//两种方式的区别
1_在 JS 中,正则表达式的两种声明方式对于“\d、\D”之类的匹配模式中,
方式一:需要转义;如:new RegExp(“\d”)
方式二:无需转义。如:/\d/
2_方式一:
支持字符串拼接,支持变量,更加灵活;如:new RegExp(“\d”+变量)
方式二:
对于固定的表达式,书写起来方便快捷、更加直观。如:/\d{3}/
匹配模式
i :忽略大小写比较
匹配模式的两种写法
var reg = new RegExp("正则表达式", "匹配模式");
如:new RegExp("abc","i");
var reg = /正则表达式/匹配模式; 如:/abc/i
正则表达式中的常用方法
boolean test("字符串") 如果正则表达式匹配字符串,返回 true,否则返回 false
var reg1 = new RegExp("\d{3}");
var result1 = reg1.test("123");
var reg2 = /\d{3}/;
var result2 = reg2.test("123");
var reg3 = /java/i;
var result3 = reg3.test("Java");
JS 匹配上与 Java 中的不同
Java 默认情况下必须要精确匹配,
而在 JS 中默认是模糊匹配,只要字符串包含了正则表达式的内容就返回 true。
正则表达式 匹配字符串 Java 中匹配结果 JavaScript 中匹配结果
\d{3} a123b false true
^\d{3} 123b false true
\d{3}a123falsetrue\d3 推荐 123 true true
^\d{3}$ 123a123 false false
请在 JS 中使用正则表达式进行验证。
用户名:只能由英文字母和数字组成,长度为 4~16 个字符,并且以英文字母开头
/^[a-zA-Z][a-zA-Z0-9]{3,15}/密码:数字6−20个字符/[0−9]6,20/
生日:生日的年份在 1900~2009 之间,
生日格式为 1980-5-12 或 1988-05-04 的形式,
/^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])/匹配中文字符的正则表达式:/[\u4e00−\u9fa5]/
匹配双字节字符(包括汉字在内):/^[^\x00-\xff]///可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:/\n\s∗\r/ //可以用来删除空白行
匹配HTML标记的正则表达式:/^<(\S*?)[^>]>.?</\1>|<.? />/匹配首尾空白字符的正则表达式:\s∗|\s∗
//可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)
匹配Email地址:/^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)/电子邮箱:符合邮箱地址的格式/\w+@\w+(.\w2,3)1,2/
\w 等价于[a-zA-Z0-9_]
匹配网址URL的正则表达式:/^[a-zA-z]+://[^\s]/匹配帐号是否合法(字母开头,允许5−16字节,允许字母数字下划线):[a−zA−Z][a−zA−Z0−9]4,15
匹配国内电话号码:/^\d{3}-\d{8}|\d{4}-\d{7}///匹配形式如0511−4405222或021−87888822匹配腾讯QQ号:/[1−9][0−9]4,/ //腾讯QQ号从10000开始
匹配中国邮政编码:/^[1-9]\d{5}(?!\d)///中国邮政编码为6位数字匹配身份证:/\d15|\d18/
//中国的身份证为15位或18位
匹配ip地址:/^\d+.\d+.\d+.\d+///提取ip地址时有用匹配特定数字:[1−9]\d∗ //匹配正整数
^-[1-9]\d//匹配负整数−?[1−9]\d∗ //匹配整数
^[1-9]\d*|0//匹配非负整数(正整数+0)−[1−9]\d∗|0 //匹配非正整数(负整数 + 0)
^[1-9]\d*.\d*|0.\d*[1-9]\d*//匹配正浮点数−([1−9]\d∗.\d∗|0.\d∗[1−9]\d∗) //匹配负浮点数
^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)//匹配浮点数[1−9]\d∗.\d∗|0.\d∗[1−9]\d∗|0?.0+|0 //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0//匹配非正浮点数(负浮点数+0)匹配特定字符串:[A−Za−z]+ //匹配由26个英文字母组成的字符串
^[A-Z]+//匹配由26个英文字母的大写组成的字符串[a−z]+ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+//匹配由数字和26个英文字母组成的字符串\w+ //匹配由数字、26个英文字母或者下划线组成的字符串