学习蛮多东西都有用到正则,感觉蛮有用,把自己看到的整理了下:
正则表达式:描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常的强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂
正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。(a-z和特殊字符 ‘元字符’);
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
特殊字符的匹配:如:$、()、*、+、-、. 、[ 、? 、\ 、^ 、{ 、| 在匹配前应该加一个\作为转义符
限定符:用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。
*
|
匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
|
+
|
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}
|
?
|
匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 |
{n} |
n 是一个非负整数。匹配确定出现的 n 次。例如,'o{2}' 不能匹配 "Boy" 中的 'o',但是能匹配 "good" 中的两个 o。
|
{n,}
|
n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Boy" 中的 'o',但能匹配 "gooooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 |
{n,m}
|
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "gooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
|
注意:*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
如: 匹配两位的整数(1-99) /[1-9][0-9]*/ =>/[0-9]{1,2}/ =>/[1-9][0-9]?/ 或者/[1-9][0-9]{0,1}/
定位符:定位符用来描述字符串或单词的边界
^ |
匹配输入字符串开始的位置。
|
$
|
匹配输入字符串结尾的位置
|
\b
|
匹配一个字边界,即字与空格间的位置。
|
\B
|
非字边界匹配(不处于一个字的开始或结束,如:/\Bco/ 匹配record,不匹配cosole) |