RegExp对象提供了JavaScript对正则表达式的支持。先看四个表:
元字符相当于是关键字不可直接使用,要用转义字符"\"转义
元字符 | 含义 |
^ | 串的开始 |
$ | 串的结束 |
* | 零到多次匹配 |
+ | 一到多次匹配 |
? | 零或一次匹配 |
\b | 单词边界 |
特殊字符用于注入空格制表符等,使用时也要转义
字符 | 含义 |
字符本身 | 匹配字符本身 |
\r | 匹配回车 |
\n | 匹配换行 |
\t | 制表符 |
\f | 换页 |
\x# | 匹配十六进制 |
\cX | 匹配控制字符 |
范围标记
标志符 | 含义 |
[...] | 在集合中的任一字符 |
[^...] | 不在集合中的任一字符 |
. | 除\n之外的任一字符 |
\w | 所有单字,包括数字字母下划线 |
\W | 不包含所有的单字,\w的补集 |
\s | 所有的空白字符,包括空格,制表符 |
\S | 所有的非空白字符 |
\d | 所有的数字 |
\D | 所有的非数字 |
\b | 退格字符 |
重复标记
标记 | 含义 |
{n} | 重复n次 |
{n,} | 重复n或更多次 |
{n,m} | 至少重复n次,之多重复m次 |
示例一个Email的正则表达式:
var email = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
[\w-]+ 表示集合(字母数字下划线减号)出现至少一次
(\.[\w-]+)* 表示组(点字母数字下划线减号)整体出现零到多次
@ 表示@出现一次
[\w-]+ 同上
(\.[\w-]+)+ 表示组(点字母数字下划线减号)整体出现一到多次
下面匹配三个字符串:
email.test("whjnsge@hotmail.com");//true email.test("wede.abresdz@pl.plidel.china");//true email.test("@ivadel.com");//false
三种情况下会用到分组:
1.用括号把子表达式标记起来
h(elp)? 就意味着help和h都可以表示“帮助”
2.当正则表达式执行完后,与之匹配的文本将会按照规则填入各个分组
var pattern =/\w{4}(\d{4})(\w{2})/; var arr = pattern.exec("ssdf5896ges");
结果是 arr[1]的值为5896 arr[2]的值为ge
3.在同一个表达式中重复使用这个组的匹配规则
var pattern = /(['"])[^\1]*\1/;
\1相当于是(['"])的别名,并可以在后面的式子中重复使用
使用正则表达式细则请参看JavaScript文档中RegExp对象。