JavaScript中的正则表达式

时间:2022-11-11 15:15:50

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对象。