JavaScript 正则表达式

正则表达式:

正则表达式(Regular(正常的,常规的) Expression),又称正规表示法、常规表示法。

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

JavaScript 正则表达式上——基本语法   JavaScript正则表达式下——相关方法

可以参考这篇文章,比较像手册,除了转义符号 “\” 都写错为“/”。 手册

定义

JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串

1. 构造函数

var reg=new RegExp('<%[^%>]+%>','g');
注意:如果正则表达式中有变量,则使用构造函数是比较方便的。

2. 字面量

var reg=/<%[^%>]%>/g;
  • g: global,全文搜索,默认搜索到第一个结果就会停止
  • i: ingore case,忽略大小写,默认大小写敏感
  • m: multiple lines,多行搜索(更改^ 和$的含义,使它们分别在任意一行对待行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配)

方法:

1.     reg.test(strObject)

       返回布尔值 用于测试字符串参数中是否存正则表达式模式,如果存在则返回true,否则返回false

2.     reg.exec(strObject) 

        返回数组或null.

        方法用于正则表达式模式在字符串中运行查找,如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。

 

除了以上两种方法,有些字符串函数可以传入RegExp对象作为参数,进行一些复杂的操作

预定义元字符

预定义特殊字符

字符 含义
\t   水平制表符 (Matchs a Tab)
\r   回车符   Matches a carriage return
\n   换行符   Matches a carriage return
\f   换页符    Matches a form feed
\cX 与X对应的控制字符(Ctrl+X)
\v   垂直制表符  Matches a vertical tab (U+000B).
\0  空字符  Matches a NULL (U+0000) character

可以使用元字符[]来构建一个简单的类(类:匹配其中的一项就可以),所谓类是指,符合某些特征的对象,是一个泛指,而不是特指某个字符了

[abc]  // 匹配a或b或c

元字符^创建反向类/负向类,反向类的意思是不属于XXX类的内容

[^abc]  // 匹配a或b或c之外的字符

范围类

[]组成的类内部是可以连写的,我们还可以这样写 [a-zA-Z]   // 匹配大写字母或小写字母中的某个字母

预定义类

正则表达式为我们提供了几个常用的预定义类(内置的类)来匹配常见的字符

字符 等价类 含义
.   [^\n\r]   除了回车符和换行符之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s [ \t\n\x0B\f\r] 空白符
\S [^ \t\n\x0B\f\r] 非空白符
\w [a-zA-Z_0-9] 单词字符(字母、数字、下划线)
\W [^a-zA-Z_0-9] 非单词字符

边界

正则表达式还提供了几个常用的边界匹配字符

字符 含义

^   以xx开头

$    以xx结尾

\b   单词边界,指[a-zA-Z_0-9]之外的字符

\B   非单词边界

量词

字符 含义
?   出现零次或一次(最多出现一次)    Equivalent to {0,1}.
+   出现一次或多次(至少出现一次)   Equivalent to {1,}.
*    出现零次或多次(任意次)           Equivalent to {0,}.
{n} 出现n次
{n,m} 出现n到m次
{n,} 至少出现n次

贪婪模式与非贪婪模式

量词在默认下是尽可能多的匹配的,也就是大家常说的贪婪模式

非贪婪模式,在量词后加上 ?

 

分组

使用()就可以达到次目的,我们称为分组

x|y  Matches either 'x' or 'y'.  匹配x或是y

前瞻

表达式 含义
exp1(?=exp2) 匹配后面是exp2的exp1
exp1(?!exp2) 匹配后面不是exp2的exp1

 

posted on 2016-04-11 22:56  kevin4dev  阅读(329)  评论(0编辑  收藏  举报

导航