首先,sublime关于正则表达式的用法:
开启sublime正则匹配:ctrl+f 点击图标'.*',若是须要替换 ctrl+h
利用正则表达式匹配以下字符串,我须要匹配jpg,而且以http开头的url,而且取出http后面的内容:javascript
http://img.host.com/folfdsders/sf.jpg https://img.host.com/fofdslders/fdssf.jpng http://imgs.host.com/folders/fdssf.jpg https://img.host.com/ffdsolders/fdssf.jpg https://imgs.host.com/folders/sfdsf.jpng http://img.host.com/fofdslders/sffds.jpg http://img.host.com/fofdslders/sffds.jpg http://img.host.com/folders/sf.jpg https://img.host.com/folders/sf.jpg
分析:html
http:(\/\/.+\.jpg) 1,首先以http://开头的,可是 '//'须要转意为'\/\/'. 2,. 表明任意字符。 3,+ 表明至少有1一个字符 4,后面又是任意字符,可是重复使用了,这里使用'\'来转意为 \. 5,以.jpg结尾的图片 6,() 表明分组,我须要的是括号里面的内容
最后的替换结果为:java
匹配日期类型:
将如下日期类型匹配的找出来正则表达式
2016-02-06 2006-01-06 20w6-01-06 2026-d2-06 2008-02-16 2fd6-01-df 2000-11-16 2032315-02-23
答案:sql
^\d{4}[/-]\d{2}[/-]\d{2}$
1,d表明一个数字,d{4}表明4个数字
2,[]表示'或',[/-] 表明 中级的链接符 '/'或者是'-'
3,^ 表明开头
4,$ 表明结尾
以下图所示:数组
如今我想把找出来的内容替换成另一种日期格式的 dd/MM/yyyy
答案:函数
^(\d{4})[/-](\d{2})[/-](\d{2})$
以下图所示:测试
Java里面有时也须要判断日期的格式(yyyy-MM-dd)
好比:ui
if (!value.matches ("^[1-2]{1}[0-9]{3}\\-[0-1]{1}[0-9]{1}\\-[0-3]{1}[0-9]{1}$")) { throw new RuntimeException("日期格式不正确"); }
能够根据日期的格式须要,任意的更改。this
Javascript 中的正则表达式
1,字面量
这里b表明单词的边界,g表明global全局的
以下图所示:
2,可使用构造函数的方式来new一个正则表达式:
3,修饰符(i 表明ignore,忽略大小写)
下面这个demo 但加上了i是'Do'也会被当作'do'来替换掉.
正则表达式的类型
1,字符类 [abc],若是字符过多能够写成[a-z],若是须要大小写字母彻底匹配 [a-zA-Z]
若是我想匹配数子和中划线
2015-12-15'.replace(/[0-9-]/g,'W')
"WWWWWWWWWW"
2,字符类取反^
1
3,预约义字符
边界匹配字符
4,多行匹配
m
5,正则表达式中的量词
6,贪婪模式-尽量多的匹配
非贪婪模式-尽量少的匹配
7,分组
主要用来圈定指定内容进行分组处理,好比:
我须要取出小写字母加上数字连续出现3次的字符(须要用小括号将指定分组的字符括起来)
8.利用分组反向引用 我但愿把日期 2016-02-05 转换成 02/05/2016
9,前瞻
正则表达式从文本的头部向尾部开始解析,文本尾部方向,称为'前',前瞻是在正则表达式匹配规则的时候,向前检查是否符合断言,后顾/后瞻方向相反(javascript不支持后顾)
a3*4 匹配有带数字的单词字符。w = [a-zA-Z0-9]
如上图所示,只有单词字符参与匹配替换,后面的数子只作匹配规则使用,不参与匹配替换。
正则表达式的对象属性
具体例子
RegExp.prototype.test(str)
用于测试字符串参数中是否存在匹配正则表达式模式的字符串,若是存在返回true,不然返回false
因为正则表达式有一个lastIndex,因此出现执行test方法 有时时true 有时是false
Stringl.protatype.search(reg)
search() 方法用于检索字符串中指定的字符串,或检索与正则表达式相匹配的字符串
方法返回第一个匹配的结果 index,查找不到返回 -1
search()方法不执行全局匹配,它忽略标志g,而且老是从字符串的开始进行搜索。
String.prototype.match(reg)
若是 regexp没有标志g,那么match()方法就只能在字符串中执行一次匹配。
若是没有找到任何匹配的文本,将返回null
不然它将返回一个数组,其中存放了与它找到匹配文本有关的信息
'2a3f3s3g4'.match(/\d(\w)\d/g) ["2a3", "3s3"]
String.prototype.split(reg)
咱们常常使用split方法把字符串分割为字符串数组,以下图所示:
String.prototype.replace
'e9f9s9e9g9'.replace(/d/g,'X')
"eXfXsXeXgX"
'e9f4s9e5g8'.replace(/d/g,'X')
"eXfXsXeXgX"
我想把字符串中的每个数字找出来加一
'R9E8R8E0W1'.replace(/d/g,function(match,index){console.log(index); return parseInt(match)+1})
1
3
5
7
9
"R10E9R9E1W2"
具体运用:
<html> <body> <script type="text/javascript"> var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; var url = 'http://www.ora.com:80/goodparts?q#fragment'; var result = parse_url.exec(url) var names = ['url','scheme','slash','host','port','path','query','hash']; var i for(i = 0;i<names.length;i++){ document.write(names[i]+':'+result[i]); document.write('<br>') // ^ 字符表示这个字符串的开始,,它是一个标记,用来防止exec跳过不像URL的前缀 // (?:([A-Za-z]+):)? 这个因子匹配一个协议名,但仅当它以后跟随一个:(冒号)的时候才匹配。(?:....)表示一个非捕获型的分组,前缀?表示这个分组是可选的。 } </script> </body> </html>
读书笔记
参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。
g 执行全局匹配(查找全部匹配而非在找到第一个匹配后中止)。找到全局全部的制定字符。
<!DOCTYPE html> <html> <head> <title>html</title> </head> <body> <script type="text/javascript"> var str = 'return something in your work,return' var patter = /return/g;//对return进行全局且不敏感搜索。 document.write(str.match(patter)) </script> </body> </html>
[abc] 表达式用于查找方括号之间的任何字符。方括号内的字符能够是任何字符或字符范围。
查找不在方括号之间的任何字符。 <!DOCTYPE html> <html> <head> <title>html</title> <!-- [abc] 表达式用于查找方括号之间的任何字符。方括号内的字符能够是任何字符或字符范围。--> </head> <body> <script type="text/javascript"> var str = 'is this your first time in china' var patter = /[a-g]/g; document.write(str.match(patter)) </script> </body> </html>
<!DOCTYPE html> <html> <head> <title>html</title> <!-- [abc] 表达式用于查找不在方括号之间的任何字符。--> </head> <body> <script type="text/javascript"> var str = 'is this your first time in china' var patter = /[^a-g]/g; document.write(str.match(patter)) </script> </body> </html>
[^a-g]
查找不在区间的任意字母,'^' 表示取反。
<!DOCTYPE html> <html> <head> <title>html</title> <!-- [abc] 表达式用于查找不在方括号之间的任何字符。--> </head> <body> <script type="text/javascript"> var str = 'is this your first time in china' var patter = /[^a-g]/g; document.write(str.match(patter)) </script> </body> </html>
[0-9]
查找任何0-9之间的数字
<!DOCTYPE html> <html> <head> <title>html</title> </head> <body> <script type="text/javascript"> var str = 'is this your 45 first time in china5489943' var patter = /[0-9]/g; document.write(str.match(patter)) </script> </body> </html>
[A-z]
查找任何大写A到小写z之间的字母
<!DOCTYPE html> <html> <head> <title>html</title> </head> <body> <script type="text/javascript"> var str = 'is this your 45mke FDJSGfirstgreenAE GREtredime GFREGin jim michaelcfjrekgsjhina5489943fregtrytujy' var patter = /[A-z]/g; document.write(str.match(patter)) </script> </body> </html>
或(red|blue|green|mke|michael|jim)
查找任意指定的字符
<!DOCTYPE html> <html> <head> <title>html</title> </head> <body> <script type="text/javascript"> var str = 'is this your 45mke FDJSGfirstgreenAE GREtredime GFREGin jim michaelcfjrekgsjhina5489943fregtrytujy' var patter = /(red|blue|green|mke|michael|jim)/g; document.write(str.match(patter)) </script> </body> </html>
元宇符.
用于查找单个字符,除了换行和行结束符。
<!DOCTYPE html> <html> <head> <title>html</title> </head> <body> <script type="text/javascript"> var str = 'is this your 45mke FDJSGfirstgreenAE GREtredibmimeiom iwm GFREGin jim michaelcfjriqmekgsjhina5489943fregtrytuiumjy' var patter = /i.m/g; //ibm,iom,iwm,iqm,ium document.write(str.match(patter)) </script> </body> </html>
exec() 方法用于检索字符串中的正则表达式的匹配。
<!DOCTYPE html> <html> <head> <title>html</title> </head> <body> <script type="text/javascript"> var str = 'is &this your 4&5e FDJSGfi&rstgremkenAE? GREtredibm&ime&iom moreiwm GFREGin jim michae&lcpowerfjriqmekgsm&jhina548|9943fregtrym&mktuiumjy' var patt = new RegExp('mk','g'); var result; while((result=patt.exec(str))!=null){ document.write(result)//mkmkmk document.write('<br>') document.write(patt.lastIndex) document.write('<br>') } </script> </body> </html>
我想替换一个sql文件中全部这样的字符:
COMMENT '我的计提报表ID', 需求: 把COMMENT 后面的除了 "," 号和回车以外全部的字符替换为空白 COMMENT .*[^\,\n]
延伸阅读:
http://www.w3school.com.cn/js...