亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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可視化正則表達式:

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

查看完整回答
反對 回復 2023-07-10
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我非常確定您的表達式需要錨點,否則它的最后一部分將匹配任何單個數字并成功。嘗試^在正面和$背面使用。



查看完整回答
反對 回復 2023-07-10
  • 2 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號