正则表达式
1、定义:
一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
2、作用:
正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法可以快速地分析大量的文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;
或将提取的字符串添加到集合以生成报告。.
3、主要用途:
正则表达式被用来匹配一组文字。
通常,它有两类用途:
- 数据有效性验证
- 查找和替换
常用的一些正则表达式匹配:
1、匹配所有的正数:^[0-9]+$
2、匹配所有的小数:^\-?[0-9]*\.?[0-9]*$
3、匹配所有的整数:^\-?[0-9]+$
4、提取信息中的中文字符串: [\u4e00-\u9fa5]* ;
5、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
6、提取信息中的中国手机号码:(86)*0*13\d{9}
7、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
8、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
9、提取信息中的中国身份证号码:\d{18}|\d{15}
10、提取信息中的任何数字:(-?\d*)(\.\d+)?
11、匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
12、匹配邮箱:/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
举个简单的例子
var pepei=document.getElementById("password").value;
var res=new RegExp("\^[0-9]+c$"); //1
var p=/^[0-9]+$/; //2
alert(pepei);
if(p.exec(pepei)){
alert("密码正确")
}
else {
alert("密码错误")
}
注意这里 1和2的正则表达式声明是等价的。
1.使用构造函数需要加前导符\
2.需要使用"/"将正则表达式括起来。
使用第一个匹配所有的正数来讲解一下正则表达式的基本语法:
其中符号^指出一个字符串的开始,与此相对应的$指出一个字符串的结束,
使用^[0-9]+$,即表示匹配的字符串从字符串的开始到结束都是[0-9]的数字,
这个里面的+表示包含至少1个或多个的数字,[0-9]表示字符的范围,匹配的字符是在0-9之中的某一个
所以这个正则表达式就表示匹配包含1个以上的字符全是正数的字符串,即字符串全部由正整数组成。
除了+之外还有*、?,*表示0个以上,用"^cd*"来说就是匹配字符c后面跟着0个或多个d的字符串。
?表示0个或1个,其实就是这个字符要么有要么没有,"^cd?$"的意思就是匹配字符串"c"或者"cd"。
大括号{}表达一个字符的重复次数
+、*、?其实对应着的就是{1,}、{0,}、{0,1}
/^ 和 $/成对使用应该是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串。
最后一些常用的特殊字符:
\d |
匹配一个数字字符。等价于 [0-9]。 |
\D |
匹配一个非数字字符。等价于 [^0-9]。 |
\f |
匹配一个换页符。等价于 \x0c 和 \cL。 |
\n |
匹配一个换行符。等价于 \x0a 和 \cJ。 |
\r |
匹配一个回车符。等价于 \x0d 和 \cM。 |
\s |
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
\S |
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 |
\t |
匹配一个制表符。等价于 \x09 和 \cI。 |
\v |
匹配一个垂直制表符。等价于 \x0b 和 \cK。 |
\w |
匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 |
\W |
匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 |