java 常用的正则表达式校验,欢迎自提

本文提供了一系列常用的正则表达式用于验证各种输入格式,包括用户名、密码、手机号、邮箱等,并附带了相应的Java校验方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里呢,是按照我们的一套校验,大家也可以自行修改,很方便,很贴心  /坏笑

 


/**
* 正则表达式:验证用户名(不包含中文和特殊字符)如果用户名使用手机号码或邮箱 则结合手机号验证和邮箱验证
*/
public static final String REGEX_USERNAME = "^[a-zA-Z]\\w{5,17}$";

/**
* 正则表达式:验证密码(不包含特殊字符)
*/
public static final String REGEX_PASSWORD = "^[a-zA-Z0-9]{6,20}$";

/**
* 正则表达式:验证手机号
*/
public static final String REGEX_MOBILE = "^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$";

/**
* 正则表达式:验证邮箱
*/
public static final String REGEX_EMAIL = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

/**
* 正则表达式:验证汉字(1-9个汉字)  {1,9} 自定义区间
*/
public static final String REGEX_CHINESE = "^[\u4e00-\u9fa5]{1,9}$";

/**
* 正则表达式:验证身份证
*/
public static final String REGEX_ID_CARD = "(^\\d{15}$)|(^\\d{17}([0-9]|X)$)";

/**
* 正则表达式:验证URL
*/
public static final String REGEX_URL = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";

/**
* 正则表达式:验证IP地址
*/
public static final String REGEX_IP_ADDR = "(2[5][0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})";

/**
* 校验用户名
* @param username
* @return 校验通过返回true,否则返回false
*/
public static boolean isUserName(String username) {
    return Pattern.matches(REGEX_USERNAME, username);
}

/**
* 校验密码
* @param password
* @return 校验通过返回true,否则返回false
*/
public static boolean isPassword(String password) {
    return Pattern.matches(REGEX_PASSWORD, password);
}

/**
* 校验手机号
* @param mobile
* @return 校验通过返回true,否则返回false
*/
public static boolean isMobile(String mobile) {
    return Pattern.matches(REGEX_MOBILE, mobile);
}

/**
* 校验邮箱
* @param email
* @return 校验通过返回true,否则返回false
*/
public static boolean isEmail(String email) {
    return Pattern.matches(REGEX_EMAIL, email);
}

/**
* 校验汉字
* @param chinese
* @return 校验通过返回true,否则返回false
*/
public static boolean isChinese(String chinese) {
    return Pattern.matches(REGEX_CHINESE, chinese);
}

/**
* 校验身份证
* @param idCard
* @return 校验通过返回true,否则返回false
*/
public static boolean isIDCard(String idCard) {
    return Pattern.matches(REGEX_ID_CARD, idCard);
}
/**
* 校验URL
* @param url
* @return 校验通过返回true,否则返回false
*/
public static boolean isUrl(String url) {
    return Pattern.matches(REGEX_URL, url);
}
/**
* 校验IP地址
* @param ipAddress
* @return
*/
public static boolean isIPAddress(String ipAddress) {
    return Pattern.matches(REGEX_IP_ADDR, ipAddress);
}

 

 

<think>好的,用户想了解如何校验IP格式。我需要先理清楚IP地址的格式要求,然后考虑不同的校验方法。首先,IP地址分为IPv4和IPv6,用户可能主要关心IPv4,但最好也提一下IPv6的情况。 IPv4的格式是四个0-255之间的数字,用点分隔,比如192.168.1.1。每个部分不能有前导零,除非是0本身。比如,192.01.1.1是不合法的,因为01有前导零。不过,实际中有些情况下可能允许前导零,可能需要根据具体需求调整规则。 接下来,校验方法。可以用正则表达式,这是比较常见的做法。IPv4的正则表达式需要匹配四个部分,每部分0-255,没有前导零。正则表达式可能会比较复杂,需要正确处理边界情况。例如,第一部分不能是0开头的,除了单独的0。然后,像250-255,200-249,100-199,0-99这些范围需要分开处理。 然后,IPv6的格式更复杂,由八组十六进制数组成,每组1-4位,用冒号分隔。可能还有缩写的情况,比如连续的零组可以用双冒号代替,但这种情况只能出现一次。正则表达式处理IPv6会更复杂,需要考虑各种情况。 另外,除了正则表达式,还可以使用编程语言内置的函数来校验,比如Python的ipaddress模块,或者Java的InetAddress类。这些方法可能更可靠,因为它们能处理更复杂的边界情况,避免正则表达式可能出现的错误。 需要注意用户的具体需求,是否需要同时支持IPv4和IPv6,或者只需要其中一种。另外,用户可能是在表单验证中使用,比如前端JavaScript,或者后端校验,不同的环境可能需要不同的实现方式。 可能用户对正则表达式不太熟悉,需要给出具体的例子,并解释每个部分的作用。比如,分解IPv4的正则表达式,解释每个部分的义,这样用户能理解并调整。 还要注意常见错误,比如忘记转义点号,或者在正则表达式中错误地允许前导零。比如,将点写成.而不是\.,导致匹配任意字符。或者允许像256这样的数字,超出0-255的范围。 总结一下,步骤应该是:1. 明确IP格式要求;2. 选择合适的校验方法(正则或内置函数);3. 实现并测试各种情况,包括合法和非法的例子。可能还需要提供代码示例,比如Python中使用正则表达式或ipaddress模块的示例,帮助用户快速应用。 另外,要提醒用户考虑IPv4和IPv6的不同情况,以及是否允许特殊格式,如localhost或CIDR表示法,但用户的问题可能仅限于标准IP地址格式。需要根据用户的实际需求调整校验逻辑。</think>要校验IP格式(包括IPv4和IPv6),可以按照以下步骤实现: --- ### 一、IPv4校验 **格式要求**:`4个0-255的整数,用点分隔`,例如 `192.168.1.1` #### 方法1:正则表达式 ```regex ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ ``` - **解释**: - `25[0-5]`:匹配250-255 - `2[0-4][0-9]`:匹配200-249 - `[01]?[0-9][0-9]?`:匹配0-199(禁止前导零,但允许0本身) #### 方法2:编程语言函数(Python示例) ```python import ipaddress def is_valid_ipv4(ip): try: ipaddress.IPv4Address(ip) return True except ipaddress.AddressValueError: return False ``` --- ### 二、IPv6校验 **格式要求**:`8组1-4位十六进制数,用冒号分隔`,例如 `2001:0db8:85a3:0000:0000:8a2e:0370:7334` #### 方法1:正则表达式 ```regex ^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^((?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*)?)::((?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*)?)$ ``` - **解释**: - 匹配完整格式或缩写格式(如`::1`表示省略部分零) #### 方法2:编程语言函数(Python示例) ```python def is_valid_ipv6(ip): try: ipaddress.IPv6Address(ip) return True except ipaddress.AddressValueError: return False ``` --- ### 三、同时校验IPv4和IPv6 ```python def is_valid_ip(ip): try: ipaddress.ip_address(ip) # 自动识别IPv4/IPv6 return True except ValueError: return False ``` --- ### 四、常见错误案例 1. **IPv4错误**: - `256.1.1.1`(数字超过255) - `192.168.01.1`(前导零) 2. **IPv6错误**: - `2001::db8::1`(多个双冒号) - `2001:dg8:85a3::`(非法字符`g`) --- ### 五、验证流程建议 1. 明确需求:只需IPv4?还是同时支持IPv6? 2. 根据场景选择: - 表单输入:用正则表达式(前端验证) - 后端处理:用编程语言内置函数(更可靠) 3. 测试边界值:如`0.0.0.0`和`255.255.255.255`是否合法 通过以上方法,可高效校验IP格式的合法性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值