最近跟廖老师学习了一下正则表达式,整理笔记如下:
基础
\d
匹配一个数字,\w
匹配一个字母或者数字,\s
匹配一个空格或者一个制表符如
-
00\d
可以匹配007
-
\d\d\d
可以匹配100
-
\w\w
可以匹配js
.
可以匹配任意字符,如
-
js.
可以匹配jsp
,js!
以上都是匹配一些固定长度的字符,要想匹配一些变长的字符
-
*
匹配任意数量的字符 -
+
匹配至少一个字符 -
?
匹配一个或者0个字符 -
{n}
匹配n个字符 -
{n,m}
匹配n-m个字符
比如一个简单应用,匹配一个电话号码,正则可以写作 \d{4}\s\d{7}
,那么就可以匹配 0391 6528455
这个号码,如果我们想匹配0391-6528455
这个号码,正则可以修改为 \d{4}\-\d{7}
下面来进行一些测试吧!
var regexObj = /\d{4}\-\d{7}/;
regexObj.test("0391-6528455"); //true
regexObj.test("!0391-6528455!"); //true
可以看到不以字母为开头或者结尾的字符串也可以通过测试,如何避免就需要用到如下两个匹配符了。
-
^
: 匹配行的开头,如以数字开头^\d
-
$
: 匹配行的结束,如以字母或者数字结尾\w$
进阶
上面只是泛泛的进行数字和字母进行匹配,要想做到精确匹配,可以使用 []
来确定匹配范围,如
[0-9a-zA-Z\_] 可以匹配一个数字,字母,或下划线
[0-9a-zA-Z\_]+ 可以匹配至少一个一个数字,字母或下划线
[a-zA-Z\_\$][0-9a-zA-Z\_\$]* 可以匹配字母/下划线/$符号开头,后接任意个数字/字母/下划线/$符号,也就是JavaScript可以接受的变量名
另外,^
不仅可以用来匹配开头,还可以当做反向字符来使用,如
[^g]oo 可以匹配不为g打头的连续两个oo字符串