正则表达式的思想是给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
正则表达式的基础语法:
1.用\d可以匹配一个数字、用\w表示字符串、用\s表示空格
2.*表示任意个字符(包括0个)、+表示一个或多个(至少一个)、?表示0个或1个字符、{n}表示n个字符,{n,m}表示n-m个字符
3. .表示匹配任意字符、对于特殊字符,如-、.等需要用\- \.转义
举个栗子:
\d{3}:表示三个数字 如 '123'
\d{3}\-\d{3,8}:表示前面三位数字 加-加后面3到8个数字。如:010-88888888通常用于部分电话号码输入控制
进阶一:
用[]表示范围,可以做到更精确地匹配:
1.[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线。注意后面有\_表示下划线。如:'a'
2.[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串;因为后面有个+符号 所以至少一个。如'zA0_'
3.[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;如:'a'或者'a$'
4.[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)
A|B可以匹配A或B,所以(J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'。
^表示行的开头,^\d表示必须以数字开头。
$表示行的结束,\d$表示必须以数字结束。
进阶二:全局搜索
JavaScript的正则表达式还有几个特殊的标志,最常用的是g,表示全局匹配:
当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引
即执行一次查找一次 返回下标,如果式子中有多个结果,执行第一次会返回第一个结果 再执行一次才会返回第二个结果下标
网友评论