当前位置: 首页 > news >正文

Android正则表达式

正则表达式的常用操作符

操作符

含义

示例

.

表示任何单个字符

[]

字符集,对单个字符给出取值范围

[abc]表示abc[a-z]表示a-z单个字符(任意一位小写字母)

[^]

非字符集。对单个字符给出排除范围

[^abc]表示非abc的单个字符

*

前一个字符的0次或者无限次的扩展

abc*表示ababcabccabcccc等等(匹配 ab

+

前一个字符的1次或者无限次的扩展

abc+表示 abcabcccabccabccccc等(不匹配 ab

?

前一个字符的0次或者1次扩展

abc?仅表示 ababc

|

左右表达式中的任意一个

abc|def表示abcdef

{m}

扩展前一个字符m次

ab{2}c表示abbc

{m,n}

扩展前一个字符m至n次(含m和n次)

ab{1,2}c匹配abcabbc

^

匹配字符串开头

^abc表示abc在一个字符串的开头,即不匹配 aabc

$

匹配字符串结尾

abc$表示abc在一个字符串的结尾,即不匹配abcd

()

分组标记内部只能使用|操作符

(abc)表示abc ,(abc|def)表示abcdef

\d

一位数字,等价于[0-9]

\w

组成单词的字符,等价于[A-Za-z0-9_]

表示字符小写大写的a-z和数字0-9以及下划线_

经典的正则表达式

表达式

含义

^[A-Za-z]+$

由26个字母组成的字符串

^[A-Za-z0-9]+$

由26个字母和数字组成的字符串

^-?\d+$

整数形式的字符串

^[0-9]*[1-9][0-9]*$

正整数形式的字符串

[1-9]\d{5}

中国境内邮政编码

[\u4e00-\u9fa5]

匹配中文字符

\d{3}-\d{8}|d{4}-\d{7}

国内固定电话号码

基本验证示例
import java.util.regex.*;public class EmailValidator {private static final String EMAIL_REGEX = "^[A-Za-z0-9+_.-]+@(.+)$";private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX);public static boolean isValidEmail(String email) {Matcher matcher = EMAIL_PATTERN.matcher(email);return matcher.matches();}public static void main(String[] args) {String[] testEmails = {"valid.email@example.com","invalid_email@.com","user.name+tag@domain.co.uk","no_at_symbol.com","user@domain","user@domain..com"};for (String email : testEmails) {System.out.println(email + " 是有效的邮箱吗? " + isValidEmail(email));}}
}
正则表达式解析

这个正则表达式由三部分组成:

  1. ^[A-Za-z0-9+_.-]+
    匹配邮箱用户名:必须包含至少一个字母、数字或特殊字符 +_.-

  2. @
    匹配邮箱中的 @ 符号

  3. (.+)$
    匹配邮箱域名:必须包含至少一个字符(任何字符)

验证结果说明

运行上面的示例代码,你会得到以下结果:

valid.email@example.com 是有效的邮箱吗? true
invalid_email@.com 是有效的邮箱吗? false
user.name+tag@domain.co.uk 是有效的邮箱吗? true
no_at_symbol.com 是有效的邮箱吗? false
user@domain 是有效的邮箱吗? true
user@domain..com 是有效的邮箱吗? true
http://www.xdnf.cn/news/609193.html

相关文章:

  • Android中ServiceManager与Binder驱动的关系
  • java 进阶 1.0.3
  • 使用 Elasticsearch 和 Red Hat OpenShift AI 提升工作流程效率
  • C#日期和时间:DateTime转字符串全面指南
  • leetcode513.找树左下角的值:递归深度优先搜索中的最左节点追踪之道
  • Typescript学习教程,从入门到精通,TypeScript 集合类型语法知识点及案例代码(11)
  • 前缀和数组一文详解
  • Vue3.5 企业级管理系统实战(二十):角色菜单
  • JDK21全景图:关键特性与升级价值
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月23日第86弹
  • 如何轻松擦U盘? (3个解决方案)
  • AI Study,学习计划
  • 2024 CKA模拟系统制作 | Step-By-Step | 3、CKA考试系统的技术设置
  • 基于SpringBoot的网上租赁系统设计与实现
  • YOLOv10 系列算法学习笔记一
  • vue开发中常用方法笔记
  • springboot3+vue3融合项目实战-大事件文章管理系统-登录优化redis
  • Vue3和React中插件化设计思想
  • YOLO11解决方案之速度估算探索
  • LaTeX中所有数字都应该在数学环境中吗?
  • Python项目中的文件夹命名和结构设计建议
  • JavaScript的三大核心组成:ECMAScript、DOM与BOM
  • WebGL开发技巧
  • 一些Dify聊天系统组件流程图架构图
  • Idea如果有参数,怎么debug
  • Grafana XSSOpenRedirectSSRF漏洞复现(CVE-2025-4123)
  • 一键生成专业流程图:Draw.io与AI结合的高效绘图指南
  • 生成式 AI:解锁人类创造力的智能引擎
  • 图解深度学习 - 特征工程(DL和ML的核心差异)
  • JavaScript篇:解密ES6的“藏宝图“:Set和Map的奇妙冒险