需求:驗證字符串是否符合 IP:Port 格式(如 192.168.1.118:8083),不需校驗 IP 數值合法性(如 999.999.999.999:99999 也視為格式通過)。
^\d{1,3}(\.\d{1,3}){3}:\d+$
^:字符串開頭。\d{1,3}:1 到 3 位數字(IP 段)。(\.\d{1,3}){3}:重複 3 次「點 + 1-3 位數字」,共 4 段 IP。::字面冒號分隔符。\d+:1 位或多位數字(端口號)。$:字符串結尾。// Java
Pattern pattern = Pattern.compile("^\\d{1,3}(\\.\\d{1,3}){3}:\\d+$");
Matcher matcher = pattern.matcher("192.168.1.118:8083");
boolean valid = matcher.matches();
// JavaScript
const regex = /^\d{1,3}(\.\d{1,3}){3}:\d+$/;
regex.test("192.168.1.118:8083"); // true
// Python
import re
re.match(r'^\d{1,3}(\.\d{1,3}){3}:\d+$', "192.168.1.118:8083") // 匹配
若需真正校驗 IP 合法性,正則極其複雜,建議用代碼邏輯分段解析:
function isValidIPPort(str) {
const match = str.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}):(\d+)$/);
if (!match) return false;
const [, a, b, c, d, port] = match;
if ([a,b,c,d].some(x => parseInt(x) > 255)) return false;
if (parseInt(port) > 65535) return false;
return true;
}
根據業務場景選擇「僅格式校驗」或「嚴格數值校驗」,前者正則簡單高效,後者代碼邏輯更清晰可維護。