首先,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...