Golang Go语言中如何写出同时包含字母和数字的正则?

Golang Go语言中如何写出同时包含字母和数字的正则?

网上的答案都是基于断言来表示的,但是 Golang 的正则不支持断言……

9 回复

(\d+\s+.|\s+\d+.)
手机手撸,没试过

更多关于Golang Go语言中如何写出同时包含字母和数字的正则?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


同时包含字母数字?
[a-zA-z0-9]* 就可以啊。

你再想想?

同时包含要考虑下顺序
有可能数字在前字母在后或者字母在前数字在后
(\d+.[a-zA-Z]+)|([a-zA-Z]+.\d+)

用两条,一条匹配字母,一条匹配数字,然后 &&

(\d+\S*[a-z])|([a-z]+\S*\d)\S*

忽略我的吧,楼上已经有比我更优的答案了

在Go语言中,你可以使用正则表达式(regex)来匹配包含字母和数字的字符串。正则表达式提供了强大的模式匹配功能,可以通过特定的语法来定义你想要匹配的模式。

要编写一个同时包含字母和数字的正则表达式,你可以使用以下的模式:

(?=.*[a-zA-Z])(?=.*\d)

这个模式使用了两个正向肯定预查(positive lookahead)断言:

  1. (?=.*[a-zA-Z]) 确保字符串中至少包含一个字母(不区分大小写)。
  2. (?=.*\d) 确保字符串中至少包含一个数字。

然而,这个模式本身并不构成一个完整的正则表达式,因为它只定义了需要满足的条件,但没有定义整个字符串的结构。为了匹配整个字符串,你需要将它与其他部分结合起来。例如,如果你想匹配整个字符串只包含字母和数字(并至少有一个字母和一个数字),你可以使用:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile(`^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]+$`)
    fmt.Println(re.MatchString("abc123")) // true
    fmt.Println(re.MatchString("abc"))    // false
    fmt.Println(re.MatchString("123"))    // false
}

这个正则表达式 ^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]+$ 确保了字符串从头到尾只包含字母和数字,并且至少有一个字母和一个数字。

回到顶部