瞬间变正则大牛
以后决定每周日给自己一个写文章的承诺,这样即可总结又能记录。
收集了一下书本内容,写一个正则基础。
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)对字符串进行分隔
当然不是说,只记住这些都变大牛了,只是这些都是基础的东西,要真正驾驭它,灵活运用它,还是需要一段专研的。
当然,我也有些饿了有些累了,下次再写些自己的东西。