php正则表达式验证IP格式、MAC格式、掩码格式、时间格式、16进制数据、文件路径

//ip格式验证
 

function IsValid_Ip($ip){
    if (strlen($ip) == 0)
        return 0;
    return preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip)
}

//mac格式验证,两种形式的mac地址书写
 

function IsValid_Mac($mac){
    if (strlen($mac) == 0)
        return 0;
  if(preg_match("/^[A-Fa-f0-9]{1,2}\-[A-Fa-f0-9]{1,2}\-[A-Fa-f0-9]{1,2}\-[A-Fa-f0-9]{1,2}\-[A-Fa-f0-9]{1,2}\-[A-Fa-f0-9]{1,2}$/", $mac))
    {
        return 1;
    } else if(preg_match("/^[A-Fa-f0-9]{1,2}\:[A-Fa-f0-9]{1,2}\:[A-Fa-f0-9]{1,2}\:[A-Fa-f0-9]{1,2}\:[A-Fa-f0-9]{1,2}\:[A-Fa-f0-9]{1,2}$/", $mac)) {
        return 2;
    }
    else{
        return 0;
    }
}

//掩码

function Mask_Judge($mask) {
    if (strlen($mask) == 0 || !IsValid_Ip($mask))
        return 0;
    $bin_mask  = (string)decbin(ip2long($mask));
    $pos_0 = strpos($bin_mask,"0");
    $pos_1 = strrpos($bin_mask,"1");
    if($pos_0==0||$pos_0==$pos_1+1||$pos_1==31) {
        return 1;
    } else {
        return 0;
    }
}

//时间格式

function Time_Judge($date) {
    if (gettype($date) == 'string')  //判断字段类型,如果是字符串,时间格式00:00
    {
        $d = explode(":",$date);
        if (count($d) != 2)
            return 0;
        if (!is_numeric($d[0]) || !is_numeric($d[1]))
            return 0;
        if (((int)$d[0]) < 0 || ((int)$d[0]) > 23)
            return 0;
        if (((int)$d[1]) < 0 || ((int)$d[1]) > 59)
            return 0;
        return 1;
    }

    if (strlen($date) == 0)   //如果是小数形式
        return 0;
    $h = (int)($date*24);
    $m = (int)(($date*24*60)%60);
    if(strlen($h)==1) $h = '0'.$h;
    if(strlen($m)==1) $m = '0'.$m;
    $t = $h.':'.$m;
    if(preg_match('/^((1|0?)[0-9]|2[0-3]):([0-5][0-9])$/', $t)) {
        return 1;
    } else {
        return 0;
    }
}

//验证16进制数据

$pattern = "/(0x)[0-9a-fA-F]{1,4}|[0-9a-fA-F]{1,4}(H)/i";
   return preg_match($pattern, $func);

//文件路径/受限进程路径/windows文件名命名规则
 

function Path_Judge($data) {
    $data = (string)$data;
    if (strlen($data) == 0)
        return 0;
    $pattern = '#^[a-zA-Z]\:\\\\[^/\:\*\?\"\<\>|]*$#';
    if(preg_match($pattern, $data)) {
        return 1;
    } else {
        return 0;
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python的re模块中的正则表达式来判断二子网码的合法性。以下是一个示例代码: ```python import re def is_binary_subnet_mask(mask): # 使用正则表达式匹配是否为二数 if not re.match(r'^[01]{32}$', mask): return False # 判断是否为连续的1 if not re.match(r'^1*0*$', mask): return False return True ``` 在上面的代码中,我们首先使用正则表达式 `^[01]{32}$` 来匹配一个32位的二数。然后,使用正则表达式 `^1*0*$` 来判断是否为连续的1和后面跟着连续的0,这是一个二子网码的特征。 使用示例: ```python >>> is_binary_subnet_mask('11111111111111111111111100000000') True >>> is_binary_subnet_mask('11111111111111111111111110000000') False >>> is_binary_subnet_mask('11111111111111111111111111111111') False >>> is_binary_subnet_mask('10000000111111111111111111111111') False ``` ### 回答2: 在Python中,可以使用正则表达式判断二子网码的合法性。二子网码是一个32位的二数,表示IP地址中网络部分和主机部分的划分。 由于二子网码的规则非常具体,可以用正则表达式来匹配并判断其合法性。 先定义以下二子网码的合法规则: 1. 二子网码必须是32位的二数; 2. 子网码的网络部分必须连续地由“1”构成,主机部分必须连续地由“0”构成; 3. 子网码的网络部分和主机部分的交界处可以由“0”或者由“1”组成。 根据上述规则,可以使用如下正则表达式来判断一个二子网码的合法性: ```python import re def is_valid_subnet_mask(binary_mask): pattern = r"^(1{1,32})|(0{1,32})$" result = re.match(pattern, binary_mask) if result: return True else: return False ``` 在代码中,使用了正则表达式的匹配方法`re.match()`来判断输入的二子网码是否满足规则。其中,正则表达式的`^`表示开头,`$`表示结尾,`1{1,32}`表示1可以重复1到32次,`0{1,32}`表示0可以重复1到32次。 通过调用`is_valid_subnet_mask`函数并传入二子网码,即可判断该子网码的合法性。如果返回值为True,则该二子网码合法;如果返回值为False,则该子网码不合法。 这样,我们就可以使用正则表达式来判断一个二子网码的合法性了。 ### 回答3: Python中可以使用正则表达式来判断二子网码的合法性。正则表达式是一种字符串匹配的工具,可以用来验证特定的模式是否存在于文本中。 下面是一个使用正则表达式判断二子网码合法性的示例代码: ```python import re def is_valid_subnet_mask(subnet_mask): pattern = r'^(([01]{8})\.){3}([01]{8})$' # 匹配一个由四个八位二数字组成的字符串,每个数字之间用点号分隔 if re.match(pattern, subnet_mask): return True else: return False # 测试 subnet_mask1 = '11111111.11111111.11111111.00000000' subnet_mask2 = '11111111.11111111.11110000.00000000' subnet_mask3 = '11111111.11110000.00000000.00000000' subnet_mask4 = '11110000.00000000.00000000.00000000' print(is_valid_subnet_mask(subnet_mask1)) # 输出:True print(is_valid_subnet_mask(subnet_mask2)) # 输出:True print(is_valid_subnet_mask(subnet_mask3)) # 输出:True print(is_valid_subnet_mask(subnet_mask4)) # 输出:True ``` 该代码中,使用了正则表达式的匹配功能来判断传入的字符串是否符合特定的模式。正则表达式的模式包括了四个八位二数字,每个数字之间由点号分隔。最终返回True表示合法,返回False表示不合法。 通过这种方式,我们可以使用Python的正则表达式模块re来方便地行二子网码合法性的判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值