javaScript--正则表达式
来源:互联网 发布:数据可靠性测试 编辑:程序博客网 时间:2024/06/16 23:41
一、什么是正则表达式?
正则表达式(Regular Expression):由一些普通字符和特殊字符组成的,用以描述一种特定的字符规则的表达式。
功能? 正则表达式常用于在一段文本中搜索、匹配或替换特定形式的文本。如:词语出现频率统计、验证邮箱格式、手机号码格式、屏蔽一篇帖子中的限制性词语等。其中:正则最常用于邮箱格式验证或者账户名密码的验证。
例如下面的某个网站的新用户注册页面就是用到正则表达式
二、何时使用正则表达式?
1. 按规则,模式匹配多个关键词——检索
2. 按规则,检查一个字符串的格式——验证
三、正则表达式的格式(用"/正则表达式/"来表示一个正则表达式)
(1).最简单的正则表达式就是字符原文
例如 var a=/regexp/; //正则表达式
var b="regexp";//一段字符串
console.log(a.test(b)); //true//与原文相同,输出true
(2).字符集:规定一个字符可用的备选字符列表
何时使用字符集? 如果关键词的某一位字符有多重备选时
如何使用? 用一个 [] 括起来 [备选字符列表]
强调 :一个字符集[] ,只能且必须匹配一位字符
简写: 如果字符集中的字符部分连续,可用“-”省略中间的字符
比如:
数字的范围是0,1,2,3,4,5,6,7,8,9 可以简写成0-9 ,用字符集表示为[0-9],意思是格式必须是一位数字,范围在0-9之间
例如: var a=/[0-9]/ ; //正则表达式
var b=2; //数字2
console.log(a.test(b)); //true, 因为2在字符集[0-9]之间,所以返回true
再例如: var a=/[0-9]/; //正则表达式
var b ="2a";//字符串2a
console.log(a.test(b)); //false, 因为字符集只能匹配一位字符,所以,2虽然在字符集[0-9]之间,但是a不是
一位数字,不在字符集[0-9]之间,虽然匹配失败,返回false
按照上面的方式,可以总结出如下格式:
1.一位数字:[0-9]
2.一位小写字母:[a-z]
3,一位大写字母:[A-Z]
4.一位字母:[A-Za-z] (大小写都行)
5.一位汉字: [\u4e00-\u9fa5]
还有一种写法,“除了....” ,用^表示
例如:[^4] ,意思是除了4之外都行
var a =/[^4]/; //正则表达式
var b=12356789; //数字12356789
console.log(a.test(b)); //返回true, 数字中没有4
var c=1234;
console.log(a.test(c)); //返回false , 数字中发现了4
(3).预定义字符集:对常用字符集的最简化写法
一位数字: \d (普通字符集写法是:[0-9])
一位字母,数字,或者下划线 : \w (用普通字符集写法是:[A-Za-z0-9_])
一位空字符:\s (包括空格,换行)
强调: 只有在规则完全匹配时,才使用预定义字符集
只要有一点不匹配,都要手动编写普通字符集
(4).量词:规定一个字符集出现次数的规则
何时: 只要规定一个字符集出现的次数
强调: 两次都要在字符集之后
有明确边界(用一个{}表示):
字符集{n,m} 至少n个,最多m个
字符集{n,} 至少n个,多了不限
字符集{n} 必须n个
没有明确边界:
字符集? 可有可无,最多1个
字符集+ 至少一个,多了不限
字符集* 可有可无,多了不限——不限制个数
例1:
var a = /\d{3,5}/; //正则表达式:数字至少3个,最多5个
var b= 123; //3位数字
var c= 1234; //4位数字
var d= 12345; //5位数字
var e = 123456; //6位数字
console.log(a,test(b)); //true ,3位数字符合
console.log(a,test(c)); //true ,4位数字符合
console.log(a,test(d)); //true ,5位数字符合
console.log(a,test(e)); //false ,6位数字不符合
例2:
var a = /\d\w?/; //正则表达式:一位数字,一位字母或数字或下划线可有可无且最多一个
var b = 2aa_;
var c = 3a;
var d = 4;
var e = 5_;
console.log(a.test(b)); //false, 2aa_不符合只有一个的要求
console.log(a.test(c)); //true, 符合一个数字,一位字母数字下划线最多一个的要求
console.log(a.test(d)); //true, 符合一个数字,一位字母数字下划线可有可无的要求
console.log(a.test(e)); //true, 符合一个数字,一位字母数字下划线最多一个的要求
(5).选择和分组
分组: ()将多个字符集包裹为一组
为什么: 量词默认仅修饰相邻的前一个字符集
何时: 希望量词同时修饰多个字符集时,就要用()将多个字符集分为一组,用量词修饰分组。
选择: 或者 规则1|规则2 只要满足任意一个规则即可
例如:
var a = /(我|卧)(草|操|艹|槽)/; //正则表达式:共8种组合
var b= “我草”;
var c = “我操”;
var d= “我艹”;
var e= “我槽”;
var f =“卧草”;
var g =“卧操”;
var h ="卧艹";
var i =“卧槽”;
var j ="我曹";
var k ="窝操";
console.log(a.test(b));//true
console.log(a.test(c));//true
console.log(a.test(d));//true
console.log(a.test(e));//true
console.log(a.test(f));//true
console.log(a.test(g));//true
console.log(a.test(h));//true
console.log(a.test(i));//true
console.log(a.test(j));/false
console.log(a.test(k));//false
(6).指定匹配位置
^ 字符串开头: 比如: 开头的空字符: ^\s+
何时: 仅匹配开头位置的xxx
$ 字符串结尾: 比如: 结尾的空字符: \s+$
何时: 仅匹配结尾位置的xxx
同时匹配开头或结尾的空字符: ^\s+|\s+$
\b 单词边界: 字符串开头 字符串结尾 空字符 标点...
何时: 匹配单个单词时
例1:
var a = /^[0-9]\w/; //正则表达式: 开头是一个数字,然后是一个数字或字母或下划线
var b = 2a;
var c = a2;
console.log(a.test(b)); //true, 开头是数字
console.log(a.test(c)); //false, 开头不是数字
例2:
var a = /\w[0-9]$/; //正则表达式: 一个数字或字母或下划线,然后结尾是一个数字
var b = 2a;
var c = a2;
console.log(a.test(b)); /false, 结尾不是数字
console.log(a.test(c)); //true, 结尾是数字
例3:
var a = /^\d{2,5}A-Za-z$/; //正则表达式: 开头是一个数字,至少2个,最多5个,结尾是一个字母,大小写都行
var b= 123a;
var c= A123;
console.log(a.test(b)); //true
console.log(a.test(c)); //false
四、正则表达式常用举例
例1:
邮箱格式的验证
邮箱格式一般例如: 123456@qq.com, 123456@163.com, 123456@126.com............
那使用JS的正则表达式该如何表达呢?
首先分为三个部分:
1.@前面的部分
2.@
3.@后面的部分
@前面的部分一般是:有数字,有字母,有下划线,至少要有一个,多了不限,可以表示为 => \w+
@后面的部分一般是:数字字母下划线,至少要有一个,多了不限然后一个 "." 紧跟com, cn , net , com.cn,可以表示为 => \w+.(com|cn|net|com.cn)
结合起来:/^\w+@/w+.(com|cn|net|com.cn)$/
var a= /^\w+@/w+.(com|cn|net|com.cn)$/;
var b= abc123456@163.com
var c = abc_qwe123@126.com.cn
console.log(a.test(b)); //true
console.log(a.test(c)); //true
例2:
手机格式验证(以中国号码为例)
手机格式一般例如:+86 13800000000,0086 18400000000......
开头是+86或者0086也可以不加,然后跟一个空格或者没有空格都行 => (\+86|0086)?\s* ,其中+号要用转义字符\+, 否则系统会报错
然后是数字1 => 1
第二个数字是3,4,5,7,8其中一个 => [34578]
然后跟9位数字 => \d {9}
结合起来: /^(\+86|0086)\s*1[34578]\d{9}$/
var a =/^(\+86|0086)\s*1[34578]\d{9}$/;
var b= +8613400000000;
var c= +86 13400000000
var d= 13400000000
console.log(a.test(b)); //true
console.log(a.test(c)); //true
console.log(a.test(d)); //true
总结:
正则表达式是js中非常基础且很重要的内容,在许多地方都会用到,一定要多练习~~~~
转载请说明出处,谢谢!
- JavaScript 正则 正则表达式
- Javascript 正则表达式javascript
- javascript正则表达式,jquery正则
- javascript正则表达式,jquery正则
- javascript正则表达式,jquery正则
- javascript正则表达式,jquery正则
- JavaScript正则表达式
- JavaScript正则表达式
- javascript中的正则表达式
- JavaScript正则表达式
- javascript正则表达式
- [JavaScript]正则表达式学习
- JavaScript中的正则表达式
- JavaScript正则表达式- -
- javascript正则表达式
- JavaScript正则表达式
- Javascript正则表达式
- javascript 正则表达式总结
- morphia与spring的整合
- springMVC 注解总结
- 总结简单Java网络编程
- Spark基础入门(二)--------DAG与RDD依赖
- JSTL fn函数大全
- javaScript--正则表达式
- Android 中MVC,MVP和MVVM
- 关于机器学习的领悟与反思
- iOS开发-读取“健康”中的步数和步行+跑步距离
- 编译 cudnn5.0+faster rcnn遇到
- Java面试小结(一)
- 申请大内存 + 数据库千万级数据存储 +查询优化
- Mac使用Git上传本地项目到github
- 基于xampp的Tomcat在MyEclipse中的配置