2

找了很多正则表达式的教程,始终没有满意的,要不就是直接给出一张元字符的表,要不就是给出各种常用的表达式,直到我看到这篇http://deerchao.net/tutorials/regex/regex.htm
这篇教程简单明了的写了正则表达式的作用及怎样使用,下面是我看完的个人理解:

正则的作用——匹配

理解了正则表达式的作用才能更好的掌握它,正则表达式的作用就是为了匹配字符串:
所以正则里的语法都是为了方便地匹配字符串而生的

下面是正则里最基本的几个匹配符:

.    匹配除换行符以外的任意字符
\w    匹配字母或数字或下划线或汉字
\s    匹配任意的空白符
\d    匹配数字
\b    匹配单词的开始或结束
^    匹配字符串的开始
$    匹配字符串的结束

有时我们需要自定义匹配的范围

[aeiou]
[a-z0-9A-Z_]

只要满足括号里的任意字符即满足匹配。

有时我们需要取反:

\W    匹配任意不是字母,数字,下划线,汉字的字符
\S    匹配任意不是空白符的字符
\D    匹配任意非数字的字符
\B    匹配不是单词开头或结束的位置
[^x]    匹配除了x以外的任意字符
[^aeiou]    匹配除了aeiou这几个字母以外的任意字符

这些只能匹配单个的字符,有时我们要匹配多个重复的:

?    重复零次或一次
{n}    重复n次
{n,}    重复n次或更多次
{n,m}    重复n到m次
*    重复零次或多次
+    重复一次或多次


分支、分组和字符转义

分枝指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。

如:
0d{2}-d{8}|0d{3}-d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。

分组指的是可以用小括号把一条表达式括起来当成一个子表达式来用,然后你就可以指定这个子表达式的重复次数了。

如:
(d{1,3}.){3}d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:d{1,3}匹配1到3位的数字,(d{1,3}.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(d{1,3})。

有时我们要匹配的字符串可能包含正则表达式语法提供的一些元字符,这时我们就要用到字符转义:

例如:
deerchao.net匹配deerchao.net,C:\Windows匹配C:Windows。


flyer_dev
413 声望45 粉丝

Front-End Developer