基础知识
我们都知道正则表达式是用来匹配合适的字符串的,那么正则是由什么组成的呢。每一个正则都是由元字符和修饰符组成的,而元字符是组成正则表达式的基本语法。
例如: var reg = / \d /; 这是一个用来匹配09之间的数字的表达式,其中\d就是一个元字符,代表09之间的数字。
那么要想熟练的写出正则表达式,就要对常用的元字符熟练于心。下面让我们一起来了解下有哪些元字符吧。
具有特殊意义的元字符
\ :转义字符(转义\后面的字符所代表的含义)
^:以后边紧跟着的字符作为起始位置
$:以前边紧挨着的字符作为结束位置
\n :匹配一个换行符
. :除了\n以外的任意字符
() :分组(()有多种作用我们放到后边专门讲,这里暂时理解为提升“优先级”,类似加减乘除运算中的())
x|y :x或者y中的一个
[x|y|z] :x或者y或者z中的一个
[^x|y|z] :除了x、y、z的任意字符
[a-z]:a~z中的任意一个字符
[^a-z]:除了a~z的任意一个字符
\d :0~9之间的任意一个数字
\D :除了0~9的任意一个字符
\b:匹配一个边界符
\w:数字、字母、下划线中的任意一个字符
\s:匹配一个空白字符(空格、制表符、换页符...)代表出现次数的量词元字符(6个)
* :出现零到多次
+ :出现一到多次
?:出现零或一次
{n} :出现n次
{n,} :出现n到多次
{n,m} :出现n到m次
小试牛刀
记住这些元字符后,我们来简单写几个例子吧~
1)
var reg = /\d\d\d/;
reg.test("123"); // --> false
reg.test("嘿喵2017"); // --> true
reg.test("1"); // --> false
(tips: test方法是RegExp.prototype上的方法,用来检测是否匹配到合适的字符串。)
开篇我们提到/\d/代表匹配一个09之间的数字,而此处reg中有三个\d,所以意为匹配三个09之间的数字,只有前两个符合要求。
2)
var reg = /^\d\d\d$/
reg.test("1234"); // --> false
reg.test("abc098"); // --> false
reg.test("068"); // --> true
加了^和$后,需要匹配到字符串的长度就被限定了,从开头到结尾只能有三个字符,且每个字符是0~9之间的数字,所以只有第三个测试的“068”符合要求。
3)
var reg = /^[1-9]\d*$/;
reg.test("0"); // --> false
reg.test("1"); // --> true
reg.test("047"); // --> false
reg.test("45753855"); // --> true
让我们分析一下,第一位是19之间的数字,第二位是个09之间的数字并且可以出现零到多次,所以大于0并且最高位不是0的数字都能满足要求。
怎么样,通过上边三个小例子是不是对正则稍微见点光了?今天先写到这里吧~