正则表达式——从匹配北美电话号码和邮箱地址学习

一般北美电话号码的格式为:

999-999-9999

或者999x999x9999 (x表示任意字符)

用字符组来匹配:

[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]

用字符组简写式:

\d\d\d-\d\d\d-\d\d\d\d

括选文字符:

^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$

第一个^表示电话号码会出现在一行的起始位置

左括号{为捕获分组的起始符

\(表示左括号本身(转义字符)

\d匹配一位数字

\d后的{3}是量词,表示匹配三位数字

\}匹配右括号本身(转义字符)

|表示选择,也就是从多个可选项中选择多个

^匹配行起始位置

\d匹配一位数字

{3}表示匹配三位数字的量词

[.-]?匹配一个可选的点号或者连字符

右括号)为捕获分组的结束符

?表示分组可选,即分组中的前缀可有可无

\d匹配一位数字

{3}表示匹配三位数字的量词

[.-]?匹配另一个可选的点号或者连字符

\d匹配一位数字

{4}是表示匹配四位数字的量词

$匹配行结束位置

下面再说一个匹配北美电话号码的正则表示式:

^\(?(?:\d{3})\)?[.-]?(?\d{3})[.-]?(?:\d{4})$

其中(?:xxxx)表示的是非捕获分组,非捕获分组不会将其内容存储在内存中,可以带来更高的性能。

匹配电子邮件地址的正则表达式:

^([\w-.!#$%&'*-+=/?^_{|}~]+)@((?:\w+\.)+)(?:[a-zA-Z]{2,4})$

预定义字符集:

\w匹配一个单词字符,相当于[a-zA-Z0-9]

\W匹配一个非单词字符[\^\w]

\d表示匹配一个数字[0-9]

\D匹配一个非数字[^\d]

\s匹配一个空白字符[<空格> \t\r\n\f\v]

\S匹配一个非空白字符[^\s]

量词:

*匹配前一个字符0或无限次

+匹配前一个字符1次或者无限次

?匹配前一个字符0或1次

{m}匹配前一个字符m次

{m,n}匹配前一个字符m-n次

边界

^匹配字符串开头,在多行模式中匹配每一行的开头

$匹配字符串末尾,在多行模式中国匹配每一行的末尾

\A仅匹配字符串开头

\Z仅匹配字符串末尾

\b匹配\w和\W之间

\B匹配[^\b]

[]一般表示字符集

{}一般表示量词

()一般表示分组

(?:)一般表示非捕获分组

正则表达式——从匹配北美电话号码和邮箱地址学习,布布扣,bubuko.com

时间: 2024-08-08 01:55:20

正则表达式——从匹配北美电话号码和邮箱地址学习的相关文章

Java 正则表达式匹配邮箱地址

作者 : 卿笃军 正则表达式中的部分元字符: 元字符 正则表达式中的写法 意义 . . 代表任意一个字符 \d \\d 代表0~9的任何一个数字 \D \\D 代表任何一个非数字字符 \s \\s 代表空白字符,如:'\t','\n' \S \\S 代表非空白字符 \w \\w 代表柯用作标示符的字符,单不包括'$' \W \\W 代表不可用作标示符的字符 . . 正则表达式,限定修饰符: 限定修饰符 意义 示例 ? 0次或1次 A? * 0次或多次 A* + 1次或多次 A+ {n} 正好出现

正则表达式匹配身份证 电话号码 邮箱 住宅电话 邮编等

身份证号码的匹配 大陆的居民身份证号码有两种:18位和15位,15位的身份证号码是老一代身份证号码. 18位和15位的区别在于两个部分:第一,18位号码的年份以4位计而15位号码的年份为2位,如1987年在18位号码中为'1987'而在15位号码中为'87',这里1987只是作为一个例子可能1987年及以后根本不存在15位号码:第二处不同在于18位号码的最后一位为数字校验码,15位号码没有数字校验位. 好吧,可能你还不知道身份证号码各个部分代表着什么,那么让我简略地介绍一下. 身份证号码总共有4

Java中常用的正则表达式判断,如IP地址、电话号码、邮箱等

java中我们会常用一些判断如IP.电子邮箱.电话号码的是不是符合,那么我们怎么来判断呢,答案就是利用正则表达式来判断了,因为本人对正则表达式没有太深的研究,所有感兴趣的朋友可以自行百度.我这就给基本的判断,废话不多说,下面就是上代码. IP地址的判断方法 public static boolean orIp(String ip) { if (ip == null || "".equals(ip)) return false; String regex = "^(1\\d{2

Python学习手册之正则表达式示例--邮箱地址提取

在上一篇文章中,我们介绍了 Python 的捕获组和特殊匹配字符串,现在我们介绍 Python 的正则表达式使用示例.查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/10040430.html 邮箱地址提取为了演示正则表达式的示例用法,我们创建一个从字符串中提取电子邮箱地址的程序.假设我们有一个包含电子邮箱地址的字符串. string = "Please contact [email protected] for assistance" 我们希

判断电话号码以及邮箱正确性的正则表达式

参考链接: java函数 /** * 验证邮箱地址是否正确 * @param email * @return */ public static boolean checkEmail(String email){ boolean flag = false; try{ String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; Pattern re

Android正则表达式验证邮箱地址

1 // 邮箱有效性验证 2 Pattern pattern = Pattern 3 .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); 4 Matcher mc = 5 pattern.matcher(RegistMail.getText().toString().trim()); 其中RegistMail为一个EditText控件,用来处理用户的邮箱输入. Android正则表达式验证邮箱地址,布布扣,bu

判断用户输入的邮箱地址是否合法 传说中的正则表达式?

判断用户输入的邮箱地址是否合法 - (BOOL) validateEmail: (NSString *) candidate { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", em

php中正则表达式的匹配和数据验证总结

正则表达式能匹配复杂的字符串形式,比字符串处理函数功能更加多,只不过执行效率有所降低,但是可以实现非常复杂的匹配,下面总结一下 1.简单的字符串匹配,判断指定字符串是不是在另一个字符串中,和字符串查找函数差不多 1 $p = '/苹果/'; 2 $str = "我喜欢吃苹果和香蕉"; 3 if (preg_match($p, $str)) { 4 echo '匹配成功!'; 5 }else{ 6 echo "匹配失败!"; 7 } 可以看出preg_match()函

正则表达式同时匹配中英文_,还控制长度

匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 数字:[0-9] 匹配中文,英文字母和数字及_: ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度:[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10} ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾:^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$  其中:^