正则表达式基础Or常用事例

正则表达式是字符处理的根本,并且在各类程序中都基本通用,所以算是个蛮重要的基本功,这里记录几种常用的例子

基本符号含义:

.    匹配除换行符以外的任意字符

^    匹配字符串的开始

$    匹配字符串的结束

[]   用来匹配一个指定的字符类别

?   对于前一个字符字符重复0次到1

*    对于前一个字符重复0次到无穷次

{}   对于前一个字符重复m次

{m,n} 对前一个字符重复为m到n次

\d   匹配数字,相当于[0-9]

\D   匹配任何非数字字符,相当于[^0-9]

\s   匹配任意的空白符,相当于[ fv]

\S   匹配任何非空白字符,相当于[^ fv]

\w   匹配任何字母数字字符,相当于[a-zA-Z0-9_]

\W   匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]

\b   匹配单词的开始或结束



[^x]    匹配除了x以外的任意字符

[^aeiou]    匹配除了aeiou这几个字母以外的任意字符

匹配电话号码   

正则:\(?0\d{2,3}[)-]?\d{7,8}

匹配转义后的'(‘0或1次->”\(?”,

然后是0然后是2位数字->0\d{2},

然后是0或1次的’)’或者’-‘  ->[)-]?

然后是最少7位,最多8位数字 ->\d{7,8}

可匹配:010-12345678 (010)12345678 (010)1234567 010-1234567 0516-12345678  0516-1234567 (0516)1234567 (0516)12345678

 

IP地址

(\d{1,3}\.){3}\d{1,3}

(至少1位,至多3位的数字,然后一个’.’)重复3次->(\d{1,3}\.){3}

然后加上一个至少1位,至多3位的数字->\d{1,3}

问题,IP地址的范围是1-255,三位数字超过255就是不合规的,如下:

精准IP地址匹配

((2[0-4]\d|25[0-5]|[01]?\d?\d)\.){3}(2[0-4]\d|25[0-5]|[01]?\d?\d)

(2+[0-4]+任意数字)或者(25[0-5])或者(0/1次的0和1然后是0/1次的数字然后是任意数字)然后是转义后的.  重复三次

然后是一个2[0-4]x或者25[0-5]或者x,0x,0xx,xx,1xx

 

2[0-4]\d 三位数 2[0-4]X

25[0-5]  三位数250-255

[01]?\d?\d  x,0x,0xx,xx,1xx

 

 +一直重复前面的匹配

<a[^>]+>

匹配<a开头 下面一直都不是>的任何字符串,直到>为止(<a*>)

\w+ 一直重复匹配字母数字(\w)直到无法匹配

匹配邮件地址

[‘user01@mail.com’, ‘user02@mail.com’, ‘user04@mail.com’, ‘hejia@hejia.com’]hj@hj.cn

\w+@\w+\.[a-zA-Z]{2,3}

一直匹配字母数字_到@后面一直匹配字母数字_到转以后的.,然后跟上至少2位至多3位的字母

 

最大匹配/最小匹配

abcd a123d

 a.*b   a开头b结尾的最长字符直到换行(.的作用是匹配除了换行符),结果是’abcd a123d

 a.*?b 是匹配a开头最短到b的字符 结果是‘abcd’和’a123d’

零宽断言

匹配

ishejia isnothe-jia meiyouh-j isnohe jia

匹配包含he的单词 \b\w*he\w*\b

匹配包含he但是后面不是jia的单子 \b\w*he[^jia]\w*\b

问题isnohe jia会被当做一个整体来处理,因为he[^jia] he后面要匹配是不是jia,这样写是一定要匹配东西的,这样he和jia中间的空格就被匹配消费了,后面的\w*\b就会把下一个单词匹配进来了

这时候可以换为[?!jia]匹配包含he但是后面不是jia的单词 \b\w*he[?!jia]\w*\b

这样就能匹配出isnohe而不是isnohe  jia了

时间: 2024-11-03 21:02:50

正则表达式基础Or常用事例的相关文章

Java基础:常用的匹配正则表达式和实例

正则 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|

javascript正则表达式基础知识入门_javascript技巧

正则表达式的好处到底在哪里呢,下面我们先进行个了解: 我们用js中处理字符串的方法,写出取出字符串中数字的函数: var str='dgh6a567sdo23ujaloo932'; function getNumber(obj){ var arr=[]; for (var i = 0; i < obj.length; i++) { if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){ arr.push(obj.charAt(i)); }

C#正则表达式基础

c#正则表达式基础 元字符: 字符 说明 ^ 匹配行的开始位置 $ 匹配行的结束位置 b 匹配单词的开始或结束位置 . 匹配除换行符号之外的任意字符 w 匹配单词字符(包括字母.数字.下划线和汉字) w 匹配任意的非单词字符(包括字母.数字.下划线和汉字) s 匹配任意的空白字符,如空格.制表符.换行符等 s 匹配非空白字符 d 匹配任意的数字 d 匹配非任意的数字 常用字符集: 字符 说明 . 匹配除换行符号之外的任意字符 w 匹配单词字符(包括字母.数字.下划线和汉字) w 匹配任意的非单词

javascript 正则表达式基础

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <title>Javascript 正则表达式基

30分钟学会正则表达式基础教程

基础教程|教程|正则表达式|正则 目录 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符转义 重复 字符类 反义 替换 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 最后,来点广告... 一些我认为你可能已经知道的术语的参考 网上的资源及本文参考文献 更新说明 本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它. 如何使用本教程 最重要

javascript正则表达式基础知识入门

  很长时间没看正则表达式了,碰巧今天用到,温故知新了一把,这里记录下来,分享给大家,都是些基础的知识,重点给大家讲解的是正则表达式中4种常用的方法,50% 的举一反三练习中的原创. 正则表达式的好处到底在哪里呢,下面我们先进行个了解: 我们用js中处理字符串的方法,写出取出字符串中数字的函数: ? 1 2 3 4 5 6 7 8 9 10 11 var str='dgh6a567sdo23ujaloo932'; function getNumber(obj){ var arr=[]; for

PHP正则表达式基础入门_正则表达式

思维导图 介绍 正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如JavaScript.Java..Net.PHP 等,我今天就把我对正则表达式的理解跟大家唠唠,不当之处,请多多指教! 需要知道的术语--下面的术语你知道多少? Δ  定界符 Δ  字符域 Δ  修饰符 Δ  限定符 Δ  脱字符 Δ  通配符(正向预查,反向预查) Δ  反向引用 Δ  惰性匹配 Δ  注释 Δ  零字符宽 定位 我们什么时候使用正则表达式呢?不是所有的字符操作都用正则就好了,ph

JAVA正则表达式4种常用功能

正则 正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它的4种常用功能: 查询: String str="abc efg ABC"; String regEx="a|f"; //表示a或f Pattern p=Pattern.compile(regEx); Matcher m=p.matcher(str); boolean rs=m.find(); 如果str中有regEx,那么rs为true,否则为flase.如果想在查

正则表达式基础知识 (转)

正则 我们先从简单的开始.假设你要搜索一个包含字符"cat"的字符串,搜索用的正则表达式就是"cat".如果搜索对大小写不敏感,单词"catalog"."Catherine"."sophisticated"都可以匹配.也就是说: 1.1 句点符号 假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以"t"字母开头,以"n"字母结束.另外,假设有一本英文字