前两天看了看正则表达式,突然发现实在是个好东西,帅气的不耀不耀的了简直,今天有空,就特意整理一下基础的东西。
1、首先来说一下到底什么是正则表达式。
RegExp: 正则表达式就是一种强大的字符串匹配工具
正则:就是规则
正则表达式:规则表达式。
其实,所谓正则表达式就是规则表达式,它所表达的就是一种规则。
当然,这里要说一下的是:没有什么事情是非正则不可的,但是正则的存在使我们的操作得到了极大的简化。
2、正则对象
JS语法中,创建一个新的对象可以用new,但是我们更常用的是perl风格的正则表达式:
// js风格:
var reg = new RegExp('a');
var reg = new RegExp('a','i');
// perl风格:
var reg = /a/;
var reg = /a/i;
3、正则和字符串
我们在JS中常用的字符串操作有:search、substring、charAt、split、replace这几种,其中replace的操作就是在正则中完美展示的。
// search 查找:存在的时候返回的是字符在字符串所处的位置,不存在的时候返回-1
var str='adcdef';
alert(str.search('a'));
// substring(起点位置,终点位置);
substring(1,4); // 表示从位置1开始到位置4结束的字符
// charAt(位置点);返回某一位置的字符
str.charAt(2); 返回的将是位置2处的字符: c
// split(); 切分字符串
var str='12-44-fff-ttt';
var arr=str.split('-');
alert(arr); // 这里返回arr数组为(12,44,fff,ttt)
// replace('旧词','新词'); 敏感词过滤
str.replace('e','*'); // 这里返回的str将是:adcd*f,其中原来的e被*代替
3、元字符[]
这里所说的元字符其实就可以理解为[]这个符号
此处讲三种元字符形式:
[asd] 等价于“或”
例如:[asd]yt 表示的是:
ayt、syt、dyt、都是符合要求的,但是像byt、cyt等就不符合
[a-z] , [0-9] 等价于“区间、范围”
[a-z]表示英文字母从a到z
[0-9]表示数字0到9
[^a-z] 等价于“除去、排除”
[^a-z] 表示除了字母a到z的其它字符
[^a-z0-9_]表示除了字母a到z、0-9以及下划线的其它字符
5、转义字符
\d 数字
\w 字母、数字、下划线
\s 空字符
\D 除了数字
\W 除了字母数字下划线
\S 非空字符
6、量词
{n} 正好出现n次
// \d{8} 数字,正好出现8次(用来判断电话号码)
{n,m} 最少n次,最多m次
// [1-9]\d{4,10}表示第一位是数字1-9的任一个,后面是四位到十位任意数字
{n,} 最少n次,最多不限
^ 有两种意思:
在[]中意思是“除了”
不在[]中意思是“行首”,字符串开头
$ “行尾”,字符串结尾
? 等价于 {0,1} 可有可无(比如固定电话的区号和分机号)
+ 等价于 {1,} (最少1次,最多不限) 若干(多少都行)
* 等价于 {0,} 没出现也算,会导致判断出错,不推荐使用
另外还有两个字母需要我们注意下:
i 忽略大小写
g 全局搜索的关键字
7、例子:
电话号码校验:
<!--电话号码-->
<!-- 010-87664565 或者87664565 -->
<!-- (0\d{2,3}-)? 区号 -->
<!-- [1-9]\d{7} 号码 -->
<!-- (-\d{1,4})? 分机号 -->
最后得到的固定电话的正则表达式就是:
(0\d{2,3}-)?[1-9]\d{7}(-\d{1,5})?
邮箱校验:
邮箱:
一串数字、英文、下划线 @ 一串英文数字 . 一串英文
\w+ @ [a-z0-9]+ \. [a-z]+
但是由于有时候会出现“!!!jiaoye000@163.com”这种不符合要求的假邮箱,所以就需要我们再加上 “行首”和 “行尾”的判断
最后生成的就是这样的格式用来验证邮箱号码:
/^\w+@[a-z0-9]+\.[a-z]+$/i
其中的+表示的就是“一串”的意思。
-----------------------------
以上就是今天关于正则表达式的相关内容了,看完之后有没有觉得原来正则表达式居然可以这么简单。有没有被帅到,反正我是被帅到了。
希望我的文章能对大家有所帮助。康撒米哒~~~