为了账号安全,请及时绑定邮箱和手机立即绑定

IPv4 正则表达式捕获地址的不正确部分

IPv4 正则表达式捕获地址的不正确部分

Go
GCT1015 2023-07-10 16:46:57
我正在尝试编写一个程序,从终端输入打印 IPv4 地址的无效部分。这是我的代码:package chapter4import (    "bufio"    "fmt"    "os"    "regexp"    "strings"    "time")func IPV4() {    var f *os.File    f = os.Stdin    defer f.Close()    scanner := bufio.NewScanner(f)    fmt.Println("Exercise 1, Chapter 4 - Detecting incorrect parts of IPv4 Addresses, enter an address!")    for scanner.Scan() {        if scanner.Text() == "STOP" {            fmt.Println("Initializing Level 4...")            time.Sleep(5 * time.Second)            break        }        expression := "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"        matchMe, err := regexp.Compile(expression)        if err != nil {            fmt.Println("Could not compile!", err)        }        s := strings.Split(scanner.Text(), ".")        for _, value := range s {            fmt.Println(value)            str := matchMe.FindString(value)            if len(str) == 0 {                fmt.Println(value)            }        }    }}我的思考过程是,对于每个终端IP地址输入,我用“.”分割字符串。然后我迭代结果[]string并将每个值与正则表达式匹配。由于某种原因,正则表达式不匹配的唯一情况是输入中存在字母字符。每个数字,无论大小或组成,都与我的表达有效匹配。我希望你能帮助我找出问题所在,如果有更好的方法,我洗耳恭听。谢谢!
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

也许,这个表达可能更接近你的想法:


^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$

测试

package main


import (

    "regexp"

    "fmt"

)


func main() {

    var re = regexp.MustCompile(`(?m)^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$`)

    var str = `127.0.0.1

192.168.1.1

192.168.1.255

255.255.255.255

0.0.0.0

1.1.1.01


30.168.1.255.1

127.1

192.168.1.256

-1.2.3.4

3...3`


    for i, match := range re.FindAllString(str, -1) {

        fmt.Println(match, "found at index", i)

    }

}


参考:

使用正则表达式验证 IPv4 地址

正则表达式电路

jex.im可视化正则表达式:

//img1.sycdn.imooc.com/64abc5b100018fac09730295.jpg

查看完整回答
反对 回复 2023-07-10
?
守着一只汪

TA贡献1872条经验 获得超3个赞

我非常确定您的表达式需要锚点,否则它的最后一部分将匹配任何单个数字并成功。尝试^在正面和$背面使用。



查看完整回答
反对 回复 2023-07-10
  • 2 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信