正则表达式
1、模式匹配符
|
^x |
以x开头 |
|
x$ |
以x结尾 |
|
x* |
匹配x 0次或n次 |
|
x+ |
匹配x 1次或n次 |
|
x? |
匹配x 0次或1次 |
|
.x |
除换行符外单个字符 |
|
x|y |
匹配x或者y |
|
n{X,Y} |
匹配包含 X 至 Y 个 n 的序列的字符串。 |
|
\b |
匹配分界线 一个空格 |
|
\B |
非分界线 |
|
\d |
匹配一个数字 |
|
\D |
匹配非数字 |
|
\n |
换行符 |
|
\r |
回车符 |
|
\s |
空白符(空格、tab、换行符、form feed) |
|
\f |
表单符 |
|
\v |
顶头制表符 |
|
\t |
制表符 |
|
\w |
数字、字母、下划线 |
|
\W |
除数字、字母、下划线以外字符 |
2、初级练习
1、求非负整数:^\d+$
2、匹配正整数:^[1-9]*[1-9][0-9]*$在网上也有这种写法的^[0-9]*[1-9][0-9]*$
这里截图我也不贴了,前者指能匹配123012这种整数,而后者可以匹配001230。
取舍就看实际的需要了
3、非正整数:^(-\d+|(0+))$
4、负整数:^-[0-9]*[1-9][0-9]*$
5、整数:^-?\d+$
6、非负浮点数:^\d+(\.\d+)?$
7、正浮点数:^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
8、非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$
9、负浮点数:^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
10、浮点数:^(-?\d+)(\.\d+)?$
11、有数字、26个英文字母组成的字符串:^[A-Za-z0-9]+$
中级练习
1、长度为8-10的用户密码(以字母开头、数字、下划线)
^[a-zA-Z]\w{7,9}$
2、验证输入只能是汉字:^[\u4e00-\u9fa5]{0,}$
3、电子邮箱验证:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
4、URL地址验证:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
5、电话号码的验证:0\d{3}-\d{7}|0\d{2}-\d{8}
6、简单的身份证号验证:\d{15}|\d{18}$
高级练习
1、提取并捕获html标签内容:
<a(?:[^>]*)+href=([^>]*)(?:[^>]*)*>

<OPTION\s.*?>

3、正则表达式应用
1)运行查找
function RegExpTest(){
var src="I'm a good boy";
var re="正则表达式";
while((arr = re.exec(src))!=null){
docunment.write(arr.index+"-"+arr.lastIndex+arr+"\t");
}
}
2)是否存在
<script>
var mystring="测试字符";
var myregexp="正则表达式";
if(myregexp.test(mystring)){
//true事件
}else{
//false事件
}
</script>
3)匹配match()
<script>
function match_demo(){
var r,re,s;
var s="测试字符";
var re=/boy/ig;
r = s.match(re);
return(r);
//返回包含所有match匹配的字符串
}
</script>
4)查找位置search()
<script>
function search_demo(){
var r,re,s; var s="I'm a good boy!"; var re=/boy/i; r = s.search(re);
return(r);
}
document.write(search_demo());// 结果:12 </script>
5)replace()搜索替换
<script>
var r,re,s; var s="ab12cd34ef56"; var re=/(\d)(\d)/gi; r = s.replace(re,"$2$1");//匹配到的第一二字符调换位置
alert(r);
//ab21cd43ef65 </script>
6)split()分割标识符
<script>
var splitArray = new array(); var s="apple、banana、orange、pine"; var re=/、/; splitArray = string,split(re);
for(i = 0;i<splitArray.length;i++){
docunment.write(splitArray[i]+" ");
}
//apple banana orange pine
</script>
4、补充
正则表达式中/i,/g,/ig,/gi,/m的区别和含义
/i (忽略大小写)
/g (全文查找出现的所有匹配字符)
/m (多行查找)
/gi(全文查找、忽略大小写)
/ig(全文查找、忽略大小写)

浙公网安备 33010602011771号