前言
正则表达式很早就学过了,不过那时没有好好理解,用的时候都是需要什么就去百度一个。不过这总归不是一件好事,只有真正自己理解了,那才是真的懂了。
基础知识
元字符
^ $ . * + ? = ! : | \ / ( ) [ ] { }
在使用这些符号时需要用\
来进行转移。
如果记不清楚那些标点符号需要转移,可以在使用标点符号时都使用反斜杠\
。
简单匹配
1、 直接量 /javascript/ 匹配带有“javascript”的字符串 比如“javascript is an object-oriented scripting language”。
2、 [ ] /[abc]/ 匹配字符“a”或“b”或“c”。
3、 [^] /[^abc]/ 匹配除了a、b、c之外的任意字符 。
4、 . /./ 任意字符
5、 \w /\w/ 任意ASCII单字符,等价于[a-zA-Z0-9]
6、 \s /\s/ 空白符
7、 \d /\d/ 数字,等价于[0-9]
重复
1、 {n,m} /[a]{3,5}/ 重复次数至少n次最多m次,比如“aaa”或“aaaa”或“aaaaa”。
2.、{n,} /[a]{3,}/ 重复次数至少n次,比如“aaa”或“aaaaa”或“aaaaaa”……
3、{n} /[a]/{3} 刚好匹配n次,比如只能匹配“aaa”
4、 ? /[a]?/ 0次或1次
5、+ /[a]+/ 1次或多次
6、 * /[a]*/ 0次或多次
选择、分组
1、 | /a|b/ 选择,匹配“a”或“b”
2、 () /(abc)+/ 分组,匹配“abc”或“abcabc”……
位置
1、^ /^a/ 以“a”开始,比如“ab”或“abc”……
2、$ /b$/ 以“b”结束,比如“ab”或“cb”……
标志
1、i /a/i 不区分大小写,比如“a”或“A”
2、g /b/g 全局匹配、找到所有的匹配
方法
1、var ret = “javascript”.search(/script/i) 返回第一次匹配子串开始字符的位置,没有匹配返回-1
2、var ret = “javascript”.replace(/java/gi,””) 讲匹配的子串替换成函数的第二个参数;
3、var ret = “javascript”.match(/(java)(script)/gi) 返回一个数组:ret[0] 完整的匹配“javascript”;ret[1] 第一个括号匹配的子串“java”; ret[2] 第二个括号匹配的子串“script”
4、var ret = “javascript”.split(/a/) 用参数匹配的子串作为分隔符分解字符串 返回数组;