สำหรับหมายเลขตั้งแต่ 0 ถึง 255 ฉันใช้นิพจน์นี้:
(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))
regex ด้านบนจะจับคู่หมายเลขจำนวนเต็มตั้งแต่ 0 ถึง 255 แต่ไม่ตรงกับ 256
ดังนั้นสำหรับ IPv4 ฉันใช้ regex นี้:
^(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})$
มันอยู่ในโครงสร้างนี้^(N)((\.(N)){3})$
โดยที่ N คือ regex ที่ใช้ในการจับคู่หมายเลขตั้งแต่ 0 ถึง 255
regex นี้จะจับคู่ IP ดังต่อไปนี้:
0.0.0.0
192.168.1.2
แต่ไม่ใช่ด้านล่าง:
10.1.0.256
1.2.3.
127.0.1-2.3
สำหรับ IPv4 CIDR (Classless Inter-Domain Routing) ฉันใช้ regex นี้:
^(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))$
มันอยู่ในโครงสร้างนี้^(N)((\.(N)){3})\/M$
โดยที่ N คือ regex ที่ใช้ในการจับคู่หมายเลขตั้งแต่ 0 ถึง 255 และ M คือ regex ที่ใช้จับคู่หมายเลขตั้งแต่ 0 ถึง 32
regex นี้จะจับคู่ CIDR ดังต่อไปนี้:
0.0.0.0/0
192.168.1.2/32
แต่ไม่ใช่ด้านล่าง:
10.1.0.256/16
1.2.3./24
127.0.0.1/33
และสำหรับรายการ IPv4 CIDR เช่น"10.0.0.0/16", "192.168.1.1/32"
ฉันใช้ regex นี้:
^("(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))")((,([ ]*)("(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))"))*)$
มันอยู่ในโครงสร้างนี้: ^(“C”)((,([ ]*)(“C”))*)$
โดยที่ C คือ regex ที่ใช้จับคู่ CIDR (เช่น 0.0.0.0/0)
regex นี้จะตรงกับรายการ CIDR ดังต่อไปนี้:
“10.0.0.0/16”,”192.168.1.2/32”, “1.2.3.4/32”
แต่ไม่ใช่ด้านล่าง:
“10.0.0.0/16” 192.168.1.2/32 “1.2.3.4/32”
บางทีมันอาจจะสั้นลง แต่สำหรับฉันแล้วฉันก็เข้าใจได้ง่ายมาก
หวังว่าจะช่วยได้!
ping 2130706433
และping 127.1
หัวเราะคิกคัก