Java正则表达式实战:高效校验技巧

需积分: 3 2 下载量 16 浏览量 更新于2024-09-14 收藏 11KB TXT 举报
Java正则表达式是Java语言中用于处理字符串模式匹配的重要工具,它可以帮助开发者在处理文本数据时进行高效、精确的查找、替换和分割操作。在Java中,正则表达式的使用通常涉及到`java.util.regex`包中的`Pattern`、`Matcher`和`PatternSyntaxException`等类。 1. `Pattern.compile("[\u4e00-\u9fa5]").matcher("Dz").matches()`:这段代码是用来检测字符串是否全由汉字组成的。`\u4e00-\u9fa5`是Unicode范围,表示所有汉字的范围,`matches()`方法会检查整个输入字符串是否都能匹配该正则表达式。 2. 数字相关的正则表达式: - `^\d+$`:匹配一个或多个数字,确保字符串仅包含数字。 - `^[0-9]*[1-9][0-9]*$`:匹配非零开头的多位数字,即至少包含一位非零数字。 - `^((-\d+)?(0+))$`:匹配负数或零,允许有前导零。 - `^-[0-9]*[1-9][0-9]*$`:匹配负数,至少包含一位非零数字。 - `^-?\d+$`:匹配正负整数,包括零。 - `^\d+(\.\d+)?$`:匹配浮点数,允许有小数部分。 - `^(([0-9]+\.[0-9]*[1-9][0-9]*)?([0-9]*[1-9][0-9]*\.[0-9]+)?([0-9]*[1-9][0-9]*))$`:匹配更复杂的浮点数格式,包括不同精度的正负数。 - `^((-\d+(\.\d+)?)?(0+(\.0+)?))$`:匹配浮点数,允许有前导负号和前导零。 - `^(-(([0-9]+\.[0-9]*[1-9][0-9]*)?([0-9]*[1-9][0-9]*\.[0-9]+)?([0-9]*[1-9][0-9]*)))$`:匹配浮点数,允许有前导负号和不同精度的小数部分。 - `^(-?\d+)(\.\d+)?$`:匹配浮点数,允许有前导负号,但小数部分可以省略。 3. 字符串相关的正则表达式: - `^[A-Za-z]+$`:匹配仅由英文字母(大小写)组成的字符串。 - `^[A-Z]+$`:匹配仅由大写字母组成的字符串。 - `^[a-z]+$`:匹配仅由小写字母组成的字符串。 - `^[A-Za-z0-9]+$`:匹配由英文字母和数字组成的字符串。 - `^\w+$`:匹配由字母、数字或下划线组成的字符串,相当于`[A-Za-z0-9_]`。 - `^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$`:匹配电子邮件地址。 - `^[a-zA-z]+://`:匹配以特定协议(如http、https)开头的URL。 - `[\u4e00-\u9fa5]`:匹配单个汉字。 - `[\s?]*\r`:匹配可能包含问号的空格或换行符。 - `<(.*)>.*<\/\1>?<(.*)\/>`:尝试匹配HTML标签。 - `(^\s*)?(\s*$)`:匹配字符串两端的空白字符。 - `[^\x00-\xff]`:匹配非ASCII字符。 4. 函数和方法: - `String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}`:自定义的字符串长度计算函数,考虑到了多字节字符(如中文)的长度。 5. 正则表达式模式: - `^\S+[a-zA-Z]$`:匹配以非空字符开头,以字母结尾的字符串,常用于验证用户名。 - `\S{6,}`:匹配至少6个非空字符,常用于密码要求。 - `^\d+$`:匹配纯数字字符串,可用于验证电话号码或身份证号等。 - `(.*)(\.jpg?\.bmp)$`:匹配以任何字符开头,以`.jpg`或`.bmp`结尾的字符串,用于图片文件名的验证。 6. 通用正则表达式技巧: - `*`:表示前面的字符可以出现零次或多次。 - `+`:表示前面的字符必须出现一次或多次。 - `?`:表示前面的字符可以出现零次或一次。 - `{n}`:表示前面的字符必须出现n次。 - `{n,}`:表示前面的字符必须出现n次或更多次。 - `{n,m}`:表示前面的字符必须出现n到m次。 掌握这些Java正则表达式的基本用法和模式,能够极大地提升你在处理文本数据时的效率和准确性,尤其在数据验证、文本分析和数据清洗等场景中,它们是不可或缺的工具。