golang正则表达式regexp

简介: golang正则表达式regexp

go regexp简介

regexp借鉴RE2语法,很多文章描述是采用了RE2,小弟认为,regexpre2其实是2个东西, 回过头来继续看regexpgolang regexp 除了\C之外,其正则表达式和Perl以及Python都是一样的,其语法规则和ERE大同小异,这里就不贴了。


关于regexp的更多文档: pkg.go.dev/regexp




go regexp小案例


匹配电话号码

我们假设从前端返回电话号码,后端在存储的时候,也需要做二次校验,格式为: 180-xxxx-xxxx,这个我们应该如何来校验呢?


按照上述格式标准,我们可以将正则设置写为:"[\d]{3}-[\d]{4}-[\d]{4}" ,我们来看下具体程序。

package main
import (
  "fmt"
  "regexp"
)
func main() {
  testString := []string{"180-1234-5678","179-123-45678","1234-123-3431"}
  for _,v := range testString {
    fmt.Println("正在处理: " ,v)
    re := "[\d]{3}-[\d]{4}-[\d]{4}"
    fmt.Println(regexp.MatchString(re,v))
  }
}


如上代码是我们测试了3组数据,分别是180-1234-5678179-123-456781234-123-3431 ,我们通过肉眼判断只有第一个是符合规则的,我们来运行代码看下呢


image.png


匹配以某结尾的字符


例如我们想匹配以hello开头的字符且以world结尾的字符,应该如何写呢?

匹配规则可以这样写: re := "hello(.*)world"

运行后效果如下

image.png


匹配email地址


例如有需求,需要匹配前端传入的email地址做二次校验,规则是以 yyy@xxx.com的格式,其中yyy最短为6位,最长为16位,只能是字母或者数字,xxx为三位字母。


我们可以将其规则写为: re := "[\w]{6,16}@[a-zA-Z]{3}.com"

我们运行程序后效果为


image.png

那么,最后,有这样一个问题: 若有这样一个需求,需要校验前端传入的密码复杂度,其规则为: 长度大于等于16位, 需要同时包含a-zA-Z0-9以及特殊字符 !@#$%其中至少一个即可,你会写这个正则表达式了么?反正我没写出来。



总结


如果你看了,上一篇文章grep正则表达式案例,你会不会对此规则感觉很熟悉呢? 快来动手试试吧。



相关文章
|
6月前
|
Go
golang力扣leetcode 10.正则表达式匹配
golang力扣leetcode 10.正则表达式匹配
51 0
|
JavaScript 前端开发
JS正则表达式:常用正则手册/RegExp/正则积累(一)
JS正则表达式:常用正则手册/RegExp/正则积累
111 1
|
存储 JavaScript 安全
JS正则表达式:常用正则手册/RegExp/正则积累(二)
JS正则表达式:常用正则手册/RegExp/正则积累
94 0
|
4月前
|
移动开发 vr&ar 索引
正则表达式 RegExp【详解】
正则表达式 RegExp【详解】
75 0
|
6月前
|
XML JavaScript 前端开发
【JavaScript | RegExp】正则表达式
【JavaScript | RegExp】正则表达式
71 4
|
6月前
|
机器学习/深度学习 Python
正则表达式(Regular Expression,常简写为regex或regexp)是一种强大的文本处理工具
【5月更文挑战第12天】正则表达式是文本处理工具,Python的re模块支持其使用。元字符如.、*、+、?等在正则表达式中具有特殊含义,用于指定匹配规则。示例中,通过正则表达式模式匹配字符串中的电子邮件地址,并使用re.findall()找出所有匹配项。
75 4
|
SQL 关系型数据库 MySQL
解密MySQL中强大的武器——REGEXP正则表达式
家人们,今天我来为大家介绍一项在 MySQL 中非常强大的武器——`REGEXP`正则表达式。MySQL 作为一款广泛使用的关系型数据库管理系统,其内置的 REGEXP 关键字为我们提供了强大的正则表达式功能,使得我们可以更加灵活和高效地进行数据匹配和处理
117 0
解密MySQL中强大的武器——REGEXP正则表达式
|
6月前
|
安全
正则表达式(Regular Expression,简称regex或regexp)
正则表达式(Regular Expression,简称regex或regexp)
138 2
|
6月前
|
数据采集 监控 Go
掌握Go语言正则表达式:regexp包全面解析
掌握Go语言正则表达式:regexp包全面解析
232 0
|
6月前
|
人工智能 JavaScript
js正则表达式new RegExp(表达式, “gi“)不区分大小写、忽略大小写匹配替换字符
js正则表达式new RegExp(表达式, “gi“)不区分大小写、忽略大小写匹配替换字符