实用正则表达式(实用篇)
常用的元字符有 | |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
常用的限定符 | |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
常用的反义字符 | |
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
贪婪与懒惰限定符 | |
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
使用小括号()时的一些特殊语法 | |
(exp) | 匹配exp,并捕获文本到自动命名的组里 |
(?<name>exp) | 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) |
(?:exp) | 匹配exp,不捕获匹配的文本,也不给此分组分配组号 |
(?=exp) | 匹配exp前面的位置 |
(?<=exp) | 匹配exp后面的位置 |
(?!exp) | 匹配后面跟的不是exp的位置 |
(?<!exp) | 匹配前面不是exp的位置 |
(?#comment) | 这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 |
一些不是很经常使用的字符 | |
\a | 报警字符(打印它的效果是电脑嘀一声) |
\b | 通常是单词分界位置,但如果在字符类里使用代表退格 |
\t | 制表符,Tab |
\r | 回车 |
\v | 竖向制表符 |
\f | 换页符 |
\n | 换行符 |
\e | Escape |
\0nn | ASCII代码中八进制代码为nn的字符 |
\xnn | ASCII代码中十六进制代码为nn的字符 |
\unnnn | Unicode代码中十六进制代码为nnnn的字符 |
\cN | ASCII控制字符。比如\cC代表Ctrl+C |
\A | 字符串开头(类似^,但不受处理多行选项的影响) |
\Z | 字符串结尾或行尾(不受处理多行选项的影响) |
\z | 字符串结尾(类似$,但不受处理多行选项的影响) |
\G | 当前搜索的开头 |
\p{name} | Unicode中命名为name的字符类,例如\p{IsGreek} |
(?>exp) | 贪婪子表达式 |
(?<x>-<y>exp) | 平衡组 |
(?im-nsx:exp) | 在子表达式exp中改变处理选项 |
(?im-nsx) | 为表达式后面的部分改变处理选项 |
(?(exp)yes|no) | 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no |
(?(exp)yes) | 同上,只是使用空表达式作为no |
(?(name)yes|no) | 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no |
(?(name)yes) | 同上,只是使用空表达式作为no |
一些常用的正则表达式:
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
用正则表达式限制只能输入中文:
用正则表达式限制只能输入全角字符:
用正则表达式限制只能输入数字:
用正则表达式限制只能输入数字和英文:
===========================================================================================
^\d+$ //匹配非负整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$ //匹配正整数
^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0)
^-[0-9]*[1-9][0-9]*$ //匹配负整数
^-?\d+$ //匹配整数
^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 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+)?)|(0+(\.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+)?$ //匹配浮点数
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url
实用正则表达式(实用篇)相关推荐
- 计算机启用时间 查找方式,电脑实用知识技巧 篇六:不需要第三方软件,这种方法查看系统启动时间...
电脑实用知识技巧 篇六:不需要第三方软件,这种方法查看系统启动时间 2019-04-04 09:19:21 0点赞 0收藏 0评论 上次我们说到:开机小助手,要让我们看到开机时间,必须添加自启动项目, ...
- 实用正则表达式匹配和替换
原文地址为: 实用正则表达式匹配和替换 正则表达式非常有用,查找.匹配.处理字符串.替换和转换字符串,输入输出等.而且各种语言都支持,例如.NET正则库,JDK正则包, Perl, JavaScrip ...
- AutoCAD实用技巧基础篇
AutoCAD 实用技巧基础篇 课 程描述: 本教程 内容系统.全面,指导读者完成从学习基本命令,到 综合利用这些命令绘制平面图形,再到了解绘制工程图的方法.技巧及AutoCAD实际应用的全过程. 版 ...
- 大班运用计算机教学案例,幼儿园大班音乐教学方案实用案例5篇
音乐作为一种转瞬即逝的时间艺术,要求幼儿保持注意力的稳定,习惯于跟随音乐的运动和变化,以便了解音乐所表现的内容和情感,形成对乐曲的整体感受.以下是小编精心收集整理的幼儿园大班音乐教学方案,下面小编就和 ...
- Linux疑难杂症解决方案100篇(二十)-Linux正则表达式(实用)指南
前言 正则表达式(Regular Expression,或者Regex),能干嘛?听说很强悍,很多人用来查找字符串,或者替换某些字符串. 实际上,正则表达式有四个功能: 匹配,即查找,例如,从杂乱的一 ...
- 胖爷的vim实用手册 - 基础篇(打开、关闭、移动、搜索)
在linux中,常用的编辑器,大概有2个半,vi或者vim,emacs,还有个简单的nano.有人说程序猿分为三种,一种是使用vim的,还有一 种使用emacs的,剩下的都是第三种.用现在一个时髦的比 ...
- Linux系统编程(18)——正则表达式实用举例
匹配特定字符串: 只能输入长度为3的字符:"^.{3}$". 只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$". 只能输入由26个大写英文字母组 ...
- JavaScript 正则表达式实用实战
1. 匹配以数字结尾的: 正则:/\d+$/g; 2. 去掉空格: var str = "我 是 龙 恩"; console.log(str.replace(/\s+/g,&quo ...
- 实用!200篇英文论文中总结的最常见错误!
文章The Most Common Habits from more than 200 English Papers written by Graduate Chinese Engineering S ...
最新文章
- 《大话设计模式》--代理模式
- MSScriptControl详解(可实现在C#等语言中调用JAVASCRIPT代码)
- npm ERR! cb.apply is not a function npm ERR! A complete log of this run can be found in: npm ERR!
- 使用浏览器的 Local Storage 真的安全吗?
- SQLSEVER 中的那些键和约束
- java 正则 栈溢出_关于Java正则引起的StackOverFlowError问题以及解决方案 | 学步园...
- easyui 图标_logo设计和图标设计有哪些不同?
- visual basic开发实例大全(基础卷_2021中考数学、物理、化学公式大全!建议收藏!...
- c fscanf 按行读取文件_每日干货丨C语言文件操作函数
- 404!优秀案例分享,这样的页面照样能给你小惊喜
- 萌豆工作室《用户许可协议》
- GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)...
- python天气可视化分析报告_Python爬取天气数据及可视化分析
- 电信收费计费系统BI项目
- The Matrix
- 如何将CM android移植到你的设备(二)
- egret的eui以及exml使用
- JAVA:Java Swing 练习题
- 有关 ovirt 的分析
- Linux打印当前目录
热门文章
- NULL,,String.Empty三者在C#中的区别
- Ubuntu中root用户和user用户的相互切换
- 最全解释P2P、P2C 、O2O 、B2C、B2B、 C2C的定义
- mysql binlog2sql闪回数据
- vagrant 本地添加box 支持带版本号
- 使用MySQL验证Open***用户登录访问
- unity, List namespace
- 谷歌Android系统在美成宠儿
- mac os 升级为Mountain Lion后,eclipse找不到JRE的问题
- 转载:SendMessage()这个函数有很多奇妙的用途