标签:
一、概述
正則表達式是一种能够用于模式匹配和替换的强有力的工具。其作用例如以下:
(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 是非负整数。 正好匹配 n 次。比如,“o{2}”与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。 |
{n,} |
n 是非负整数。至少匹配 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