返回
正则表达式教程:子网掩码校验
正则表达式
2024-02-28 15:49:06
一、正则解释
正则表达式:/^(254|252|248|240|224|192|128).0.0.0|255.(254|252|248|240|224|192|128|0).0.0|255.255.(254|252|248|240|224|192|128|0).0|255.255.255.(255|254|252|248|240|224|192|128|0)$/
- ^: 行的开头
- 254|252|248|240|224|192|128: 子网掩码第一组可能的值
- .: 匹配一个句点
- 0.0.0: 子网掩码的其余部分,一直到第一个 0
- |: 或者
- 255.(254|252|248|240|224|192|128|0).0.0: 第二组可能的子网掩码值
- |: 或者
- 255.255.(254|252|248|240|224|192|128|0).0: 第三组可能的子网掩码值
- |: 或者
- 255.255.255.(255|254|252|248|240|224|192|128|0)$: 第四组可能的子网掩码值
- $: 行的结尾
二、使用场景
此正则表达式用于验证子网掩码的有效性。子网掩码用于将 IP 地址划分为网络部分和主机部分。此正则表达式将接受以下格式的子网掩码:
- 255.255.255.0
- 255.255.255.255
- 255.240.0.0
三、代码示例
JavaScript
const regex = /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$/;
const subnetMasks = ['255.255.255.0', '255.255.255.255', '255.240.0.0'];
for (const subnetMask of subnetMasks) {
console.log(`${subnetMask} is ${regex.test(subnetMask) ? 'valid' : 'invalid'}`);
}
Java
import java.util.regex.Pattern;
public class SubnetMaskValidator {
public static void main(String[] args) {
String regex = "^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(255|254|252|248|240|224|192|128|0)import java.util.regex.Pattern;
public class SubnetMaskValidator {
public static void main(String[] args) {
String regex = "^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(255|254|252|248|240|224|192|128|0)$";
String[] subnetMasks = {"255.255.255.0", "255.255.255.255", "255.240.0.0"};
for (String subnetMask : subnetMasks) {
boolean isValid = Pattern.matches(regex, subnetMask);
System.out.println(subnetMask + " is " + (isValid ? "valid" : "invalid"));
}
}
}
quot;;
String[] subnetMasks = {"255.255.255.0", "255.255.255.255", "255.240.0.0"};
for (String subnetMask : subnetMasks) {
boolean isValid = Pattern.matches(regex, subnetMask);
System.out.println(subnetMask + " is " + (isValid ? "valid" : "invalid"));
}
}
}
PHP
<?php
$regex = "/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$/";
$subnetMasks = ['255.255.255.0', '255.255.255.255', '255.240.0.0'];
foreach ($subnetMasks as $subnetMask) {
$isValid = preg_match($regex, $subnetMask);
echo "$subnetMask is " . ($isValid ? 'valid' : 'invalid') . "\n";
}
Python
import re
regex = r"^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)import re
regex = r"^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$"
subnetMasks = ['255.255.255.0', '255.255.255.255', '255.240.0.0']
for subnetMask in subnetMasks:
is_valid = bool(re.match(regex, subnetMask))
print(f"{subnetMask} is {'valid' if is_valid else 'invalid'}")
quot;
subnetMasks = ['255.255.255.0', '255.255.255.255', '255.240.0.0']
for subnetMask in subnetMasks:
is_valid = bool(re.match(regex, subnetMask))
print(f"{subnetMask} is {'valid' if is_valid else 'invalid'}")