Don’t let your dreams be dreams.

瞬间变正则大牛

以后决定每周日给自己一个写文章的承诺,这样即可总结又能记录。

收集了一下书本内容,写一个正则基础。

1.正则表达式中的特殊字符

\    在字面意义和特殊意义之间进行切换 ,例如\w表示\w的特殊意义时(即正则意义),而不是字面值w,但是\$表示使用$的正则意义,而是$字符本身
^    字符串开头。
$    字符串结尾
*    0次或者多次
+    1次或者多次
?    0次或者一次
.    除换行 符外的任何字符
\b   单词边界
\B   非单词边界
\d   0~9的任何数字[0-9]相同
\D   非数字
\f   换页符
\n   换行符
\r   回车符
\s   任何一个空白字符(与[\f\n\r\t\v]相同)
\S   任何一个非空白字符
\t   制表符
\v   垂直制表符
\w   任何字母,数字以及下划线(与[a-zA-Z_]相同)
\W   除数字,字母下划线的其它字符
\xnn     16进制数字nn定义的ASCⅡ
\onn     8进制数字nn定义的ASCⅡ
\cX      控制字符X
[abcd]   与其中任何字符匹配的字符集
[^abcd]  字体补集,与其中任何字符都不匹配的字符集
[a-e]    与其中的字符范围匹配的字符集
[\b]     退格字符的字面意义(不同于\b)
{n}      前面的字符正好出现n次
{n,}     前面的字符至少出现n次
{n,m}    前面 的字符出现 n~m次
()       一个捕获组,可以在后面引用它$1,$2。一个捕获型分组会复制它所匹配的文本,把其放到result数组里。每个捕获分组都会被指定一个编号,第一个组编号为1,所以该分组匹配文本则是result[1].
(?:) 一个非捕获组。
x|y x或者y
\2 表示复制第二个捕获组如^([1-9]\d*(\.\d{1,2})?|0\2)$/,表示复制一遍小数点的那一块

2.正则表达式修饰符

g   搜索所有的匹配(全局),不只是第一处匹配
i   进行不区分大小写的搜索

3. js有一个内置的RegRep对象,每当脚本执行正则表达式方法时,会自动的设置 (和重新设置)这个对象,regExp对象并不是一个包含正则表达式操作结果的变量,而是包含正则表达式所描述的模式,脚本可以通过regExp对象的属性和方法访问文本模式的各个部分。

$1(到$9)  圆括号包围的子字符串匹配
$_        相当于input
$*        相当于multiline
$& 相当于lastMatch $+ 相当于lastParen $` 相当于leftContext $' 相当于rightContext constructor 指定创建对象原型的函数 global 全局搜索 ignoreCase 不区分大小写搜索 input 如果没有传递字符串,这就是要搜索的字符串 lastIndex 继续匹配的起始位置 lastMatch 最后一个匹配的字符串 lastParen 最后的圆括号包围的子字符串匹配 leftContext 最近一个匹配字符串左边的子字符串 multiline 是否跨多行搜索字符串 prototype 允许在所有对象中添加属性 rightContext 最近一个匹配字符串右边的子字符串 source 正则表达式模式本身

4.regExp对象的方法

compile(pattern,[,"g"|"i"|"gi"])    对正则表达式进行编译
exec(string)                        搜索匹配
test(string)                        测试匹配
toSource()                          返回一个代表对象的字面值
toString()                          返回一个代表指定对象的字符串
valueOf()                           返回指定对象的原始值

5.字符串方法

match(re)                在一个字符串中寻找与一个正则表达式模式(re)的匹配,此方法匹配出来的是一个结果数组,首先会把匹配到的结果在数组第一个元素,其次把正则里的捕获组匹配出来$1表示第一个捕获组,$2第二个捕获组,以此类推
replace(re,replaceStr)   使用正则表达式(re)执行所需的替换
search(re)               搜索与正则表达式(re)的匹配
split(re)                根据正则表达式(re)对字符串进行分隔

 

当然不是说,只记住这些都变大牛了,只是这些都是基础的东西,要真正驾驭它,灵活运用它,还是需要一段专研的。

当然,我也有些饿了有些累了,下次再写些自己的东西。

posted on 2013-11-10 15:40  包田耘  阅读(963)  评论(6编辑  收藏  举报