码迷,mamicode.com
首页 > 其他好文 > 详细

正則表達式

时间:2016-01-01 21:04:06      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:

一、概述

正則表達式是一种能够用于模式匹配和替换的强有力的工具。其作用例如以下:

 (1)測试字符串的某个模式。比如,能够对一个输入字符串进行測试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。

 (2)替换文本。能够在文档中使用一个正則表達式来标识特定文字,然后能够所有将其删除,或者替换为别的文字;

 (3)依据模式匹配从字符串中提取一个子字符串。

能够用来在文本或输入字段中查找特定文字。

二、匹配字符

字符

解释说明

\

将下一字符标记为特殊字符、文本、反向引用或八进制转义符。比如。“n”匹配字符“n”。

“\n”匹配换行符。序列“\\”匹配“\”,“\(”匹配“(”。

^

匹配输入字符串開始的位置。假设设置了 RegExp 对象的 Multiline 属性。^ 还会与“\n”或“\r”之后的位置匹配。

$

匹配输入字符串结尾的位置。

假设设置了 RegExp 对象的 Multiline 属性,$ 还会与“\n”或“\r”之前的位置匹配。

*

零次或多次匹配前面的字符或子表达式。比如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。

+

一次或多次匹配前面的字符或子表达式。比如,“zo+”与“zo”和“zoo”匹配。但与“z”不匹配。+ 等效于 {1,}。

?

零次或一次匹配前面的字符或子表达式。比如。“do(es)?”匹配“do”或“does”中的“do”。

?

等效于 {0,1}。

{n}

是非负整数。

正好匹配 n 次。比如,“o{2}”与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。

{n,}

是非负整数。至少匹配 次。

比如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的全部 o。

“o{1,}”等效于“o+”。“o{0,}”等效于“o*”。

{n,m}

M 和 n 是非负整数,当中 n <= m。匹配至少 n 次。至多 m 次。比如。“o{1,3}”匹配“fooooood”中的头三个 o。‘o{0,1}‘ 等效于 ‘o?

‘。

注意:您不能将空格插入逗号和数字之间。

?

当此字符紧随不论什么其它限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。

“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。比如,在字符串“oooo”中,“o+?

”仅仅匹配单个“o”。而“o+”匹配全部“o”。

.

匹配除“\n”之外的不论什么单个字符。

若要匹配包含“\n”在内的随意字符,请使用诸如“[\s\S]”之类的模式。

x|y

匹配 x 或 y。比如,‘z|food‘ 匹配“z”或“food”。‘(z|f)ood‘ 匹配“zood”或“food”。

[xyz]

字符集。匹配包括的任一字符。比如,“[abc]”匹配“plain”中的“a”。

[^xyz]

反向字符集。匹配未包括的不论什么字符。

比如,“[^abc]”匹配“plain”中的“p”。

[a-z]

字符范围。

匹配指定范围内的不论什么字符。比如,“[a-z]”匹配“a”到“z”范围内的不论什么小写字母。

[^a-z]

反向范围字符。

匹配不在指定的范围内的不论什么字符。

比如,“[^a-z]”匹配不论什么不在“a”到“z”范围内的不论什么字符。

\b

匹配一个字边界。即字与空格间的位置。比如,“er\b”匹配“never”中的“er”,但不匹配“verb”中的“er”。

\B

非字边界匹配。“er\B”匹配“verb”中的“er”。但不匹配“never”中的“er”。

\cx

匹配 x 指示的控制字符。比如。\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。假设不是这样,则假定 c 就是“c”字符本身。

\d

数字字符匹配。等效于 [0-9]

\D

非数字字符匹配。等效于 [^0-9]

\f

换页符匹配。

等效于 \x0c 和 \cL。

\n

换行符匹配。等效于 \x0a 和 \cJ。

\r

匹配一个回车符。

等效于 \x0d 和 \cM。

\s

匹配不论什么空白字符,包含空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。

\S

匹配不论什么非空白字符。与 [^ \f\n\r\t\v] 等效。

\t

制表符匹配。

与 \x09 和 \cI 等效。

\v

垂直制表符匹配。与 \x0b 和 \cK 等效。

\w

匹配不论什么字类字符,包含下划线。与“[A-Za-z0-9_]”等效。

\W

与不论什么非单词字符匹配。与“[^A-Za-z0-9_]”等效。

三、运算符优先级

 同其它语言一样。正則表達式中运算符也存在着表达顺序,运算符顺序从高到低例如以下所看到的:

运算符

解释说明

\

转义符

(), (?:), (?=), []

括号和中括号

*, +, ?, {n}, {n,}, {n,m}

限定符

^, $, \不论什么元字符、不论什么字符

定位点和序列

|

替换

四、正則表達式对象相关的方法

(1).test()方法,返回一个Boolean值。它指出在被查找的字符串中是否存在模式。假设存在,则返回true。否则返回false。

(2).exec()方法,用正則表達式模式在字符串中执行查找,并返回包括该查找结果的一个数组。

(3).compile()方法,把正則表達式编译为内部格式,从而运行速度更快。

五、正則表達式对象的属性

(1).source:返回正則表達式模式的文本的复本。仅仅读。

(2)lastIndex:返回字符位置,它是被查找字符串中下一次成功匹配的開始位置。

(3)$1...$9:返回九个在模式匹配期间找到的、近期保存的部分。

仅仅读。

(4)input($_):返回运行规范表述查找的字符串。仅仅读。

六、String对象一些和正則表達式先关的方法

(1)match()方法:找到一个或多个正則表達式的匹配。

(2)replace()方法。替换与正則表達式匹配的子串。

(3)search()方法,检索与正則表達式想匹配的值。

(4)spilit()方法。把字符串切割为字符串数组。

 

 

正則表達式

标签:

原文地址:http://www.cnblogs.com/lcchuguo/p/5093684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!