golang之正則校驗

2021-07-24 16:13:19 字數 2183 閱讀 6936

go語言中使用正則校驗需要用到regexp

先介紹幾種常用的方法:

1、使用matchstring函式

regexp.matchstring(pattern string, s string)  pattern為正規表示式,s為需要校驗的字元傳

例:match,_:=regexp.matchstring("p([a-z]+)ch","peddach") 返回的第乙個引數是bool型別即匹配結果,第二個引數是error型別

fmt.println(match) //結果為true

2、使用 compile函式或mustcompile函式

它們的區別是compile返回兩個引數*regexp,error型別,而mustcompile只返回*regexp型別

func compile(expr string) (*regexp, error) {}

func mustcompile(str string) *regexp {}

它們的作用是將正規表示式進行編譯,返回優化的 regexp 結構體,該結構體有需多方法。

例r,_:=regexp.compile("p([a-z]+)ch")

b:=r.matchstring("peach")

fmt.println(b) //結果為true

r1:=regexp.mustcompile("p([a-z]+)ch")

b1:r1.matchstring("peach")

fmt.println(b) //結果為true

3、regexp結構體中一些常用的方法

r,_:=regexp.compile("p([a-z]+)ch")

fmt.println(r.matchstring("peach")) //j結果:true

//查詢匹配的字串

fmt.println(r.findstring("peach punch")) //列印結果:peach

//查詢匹配字串開始和結束位置的索引,而不是匹配內容[0 5]

fmt.println(r.findstringindex("peach punch")) //列印結果: [0 5]

//返回完全匹配和區域性匹配的字串,例如,這裡會返回 p([a-z]+)ch 和 `([a-z]+) 的資訊

fmt.println(r.findstringsubmatch("peach punch")) //列印結果:[peach ea]

//返回完全匹配和區域性匹配的索引位置

fmt.println(r.findstringsubmatchindex("peach punch")) //列印結果: [0 5 1 3]

//返回所有的匹配項,而不僅僅是首次匹配項。正整數用來限制匹配次數

fmt.println(r.findallstring("peach punch pinch",-1)) //列印結果:[peach punch pinch]

fmt.println(r.findallstring("peach punch pinch",2)) //匹配兩次 列印結果:[peach punch]

//返回所有的完全匹配和區域性匹配的索引位置

fmt.println(r.findallstringsubmatchindex("peach punch pinch",-1))

//列印結果: [[0 5 1 3] [6 11 7 9] [12 17 13 15]]

//上面的例子中,我們使用了字串作為引數,並使用了如 matchstring 這樣的方法。我們也可以提供 byte引數並將 string 從函式命中去掉。

fmt.println(r.match(byte("peach"))) //列印結果:true

r1:=regexp.mustcompile("p([a-z]+)ch")

//將匹配的結果,替換成新輸入的結果

fmt.println(r1.replaceallstring("a peach","")) //列印結果: a //func 變數允許傳遞匹配內容到乙個給定的函式中,

in:=byte("a peach")

out:=r1.replaceallfunc(in,bytes.toupper)

fmt.printf(string(out)) //列印結果: a peach

golang正則之命名分組

正則中有分組這個功能,在golang中也可以使用命名分組。場景還原如下 實現如下 str alice 20 alice gmail.com 使用命名分組,顯得更清晰 re regexp.mustcompile p a za z s p d s p w w w match re.findstrings...

正則校驗url

http s?複雜點為 var urlregex http https w w w u4e00 u9fa5 或 http https w w w w 當然這三種寫法不夠嚴謹,與 等明顯錯誤的url依然能匹配成功。下面是比較嚴謹的一些寫法 涉及對http,https協議,網域名稱,ip,port的校驗...

常用正則校驗

郵箱 param s export function isemail s test s 手機號碼 param s export function ismobile s test s 號碼 param s export function isphone s 0 9 test s url位址 param...