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

正则语言(转的 大额_skylar )

 备注:正则表达式真的很头疼,收集起来,用起来很方便的。

  常用的元字符

.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

常用的限定符

  
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

 

 常用的反译代码                                 

\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

 常用的分组语法                                

捕获(exp)匹配exp,并捕获文本到自动命名的组里
(?<name>exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
注释(?#comment)这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

   惰性限定符                              

*?重复任意次,但尽可能少重复
+?重复1次或更多次,但尽可能少重复
??重复0次或1次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复
{n,}?重复n次以上,但尽可能少重复

    其他匹配

\a报警字符(打印它的效果是电脑嘀一声)
\b通常是单词分界位置,但如果在字符类里使用代表退格
\t制表符,Tab
\r回车
\v竖向制表符
\f换页符
\n换行符
\eEscape
\0nnASCII代码中八进制代码为nn的字符
\xnnASCII代码中十六进制代码为nn的字符
\unnnnUnicode代码中十六进制代码为nnnn的字符
\cNASCII控制字符。比如\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

 

 

 

1、匹配中文字符的正则表达式: [\u4e00-\u9fa5]
  评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

2、匹配双字节字符(包括汉字在内):[^\x00-\xff]
  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

3、匹配空白行的正则表达式:\n\s*\r
  评注:可以用来删除空白行

4、匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

5、匹配首尾空白字符的正则表达式:^\s*|\s*$
  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

6、匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  评注:表单验证时很实用

7、匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
  评注:网上流传的版本功能很有限,上面这个基本可以满足需求

8、匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  评注:表单验证时很实用

9、匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
  评注:匹配形式如 0511-4405222 或 021-87888822

10、匹配腾讯QQ号:[1-9][0-9]{4,}
  评注:腾讯QQ号从10000开始

11、匹配中国邮政编码:[1-9]\d{5}(?!\d)
  评注:中国邮政编码为6位数字

12、匹配身份证:\d{15}|\d{18}
  评注:中国的身份证为15位或18位

13、匹配ip地址:\d+\.\d+\.\d+\.\d+
  评注:提取ip地址时有用

14、匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
  评注:处理大量数据时有用,具体应用时注意修正

15、匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

 

16、过滤 EMOJI表情:    

     return this.replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '')

 

17、匹配页面所有的{{name}}这样的:

  

复制代码
1     var rformat = /\\?{{([^{}]+)\}}/gm;
2     function getMessage() {
3         var data = this.data || {}
4         return this.message.replace(rformat, function(_, name) {
5             return data[name] || ""
6         })
7     }
复制代码

 

 

 

非常好的学习资源:http://www.jb51.net/tools/zhengze.html#metacode

转载于:https://www.cnblogs.com/huenchao/p/5951712.html

相关文章:

  • ASP.NET 2.0中直接将Access数据库导入到Excel文件中
  • 读书笔记1
  • 安然公司特殊目的实体(SPEs)解读
  • 双击本地磁盘会出现比如C:\不是有效的Win32应用程序
  • findbugs eclipse 插件 及使用
  • 数字通讯基础:同步与异步
  • Contiki Ctimer模块
  • 人生的抉择
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • phalcon模型查询几种方法
  • 在DotNetNuke中通过修改ascx文件源码自定义界面
  • day10---paramiko ssh ftp
  • ArcSDE9.2
  • 如何删除mspcidrv.sys病毒
  • js循环生成多个easyui datagrid数据网格时,初始化表格
  • Bootstrap JS插件Alert源码分析
  • exports和module.exports
  • HashMap剖析之内部结构
  • HomeBrew常规使用教程
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript实现分页效果
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • React组件设计模式(一)
  • Swoft 源码剖析 - 代码自动更新机制
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • - 概述 - 《设计模式(极简c++版)》
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 系统认识JavaScript正则表达式
  • 移动端唤起键盘时取消position:fixed定位
  • 因为阿里,他们成了“杭漂”
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (一)WLAN定义和基本架构转
  • (转)scrum常见工具列表
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET 发展历程
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET成年了,然后呢?
  • .NET面试题(二)
  • .project文件
  • @RequestBody的使用
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [C# 基础知识系列]专题十六:Linq介绍
  • [CakePHP] 在Controller中使用Helper
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [CTF]php is_numeric绕过