正则表达式

android 有些地方用到了正则表达式,如判读电话号码是否有效,email是否有效等,把网上的 资料 简单整理了一下与大家分享。

1. 什么是正则表达式

基本说来,正则表达式是一种用来描述一定数量文本的模式。 Regex 代表 Regular Express
在编写处理字符串的程序 或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式 就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码

2. 正则表达式中的特殊字符
[ ] / ^ $ . | ? * + ( )

这些特殊字符也被称作元字符。

如果你想在正则表达式中将这些字符用作文本字符,你需要用反斜杠“ / ”对其进行换码 (escape) 。例如你想匹配“ 1+1= 2 ,正确的表达式为 <<1/+1=2>>.

需要注意的是, <<1+1=2>> 也是有效的正则表达式。但它不会匹配“ 1+1= 2 ,而会匹配“ 123+111= 234 中的“ 111=2 ”。因为“ + ”在这里表示特殊含义(重复 1 次到多次)。

在编程语言中,要注意,一些特殊的字符会先被编译 器处理,然后再传递给正则引擎。因此正则表达式 <<1/+2=2>> C++ 中要写成“ 1//+1= 2 。为了匹配“ C:/temp ”,你要用正则表达式 <<C://temp>> 。而在 C++ 中,正则表达式则变成了“ C:////temp ”。


3. 元字符描述

. 匹配任何单个字符。例如正则表达式 r.t 匹配这些字符串: rat rut r t ,但是不匹配 root

$
匹配行结束符。例如正则表达式 weasel$ 能够匹配字符串 "He's a weasel" 的末尾,但是不能匹配字符串 "They are a bunch of weasels."

^
匹配一行的开始。例如正则表达式 ^When in 能够匹配字符串 "When in the course of human events" 的开始,但是不能匹配 "What and When in the"

*
匹配 0 或多个正好在它之前的那个字符。例如正则表达式 .* 意味着能够匹配任意数量的任何字符。

[ ]
匹配括号中的任何一个字符。例如正则表达式 r[aou]t 匹配 rat rot rut ,但是不匹配 ret 。可以在括号中使用连字符 - 来指定字符的区间,例如正则表达式 [0-9] 可以匹配任何数字字符;还可以制定多个区间,例如正则表达式 [A-Za-z] 可以匹配任何大小写字母。另一个重要的用法是 排除 ,要想匹配除了指定区间之外的字符 —— 也就是所谓的补集 —— 在左边的括号和第一个字符之间使用 ^ 字符,例如正则表达式 [^269A-Z] 将匹配除了 2 6 9 和所有大写字母之外的任何字符。

( )
( ) 之间的表达式定义 group ),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存 9 个),它们可以用

的符号来引用。

|
将两个匹配条件进行逻辑 Or )运算。例如正则表达式 (him|her) 匹配 "it belongs to him" "it belongs to her" ,但是不能匹配 "it belongs to them." 。注意:这个元字符不是所有的软件 都支持的。

+
匹配 1 或多个正好在它之前的那个字符。例如正则表达式 9+ 匹配 9 99 999 等。注意:这个元字符不是所有的软件都支持的。

?
匹配 0 1 个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。

{i} {i,j}
匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式 A[0-9]/{3/} 能够匹配字符 "A" 后面跟着正好 3 个数字字符的串,例如 A123 A348 等,但是不匹配 A1234 。而正则表达式 [0-9]/{4,6/} 匹配连续的任意 4 个、 5 个或者 6 个数字字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值