正则表达式详解

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

正则表达式可以干嘛?

1、数据有效性验证,可以对一个字符串进行测试,看该字符串是否符合某种规定。

2、替换文本,可以在文档中将指定的文字删除,或替换为其他文字。

3、根据字符串提取一个子字符串,用来在文本或输入字段中查找特定文字。

正则表达式语法

一个正则表达式是由普通字符(a-z)和特殊字符(元字符)组成的文字模式,该模式作为一个模版,将某个字符模式与所搜索的字符串进行匹配。

元字符

具有特殊意义的专用字符。

基本元字符

.  匹配除换行以外的任意字符,例如正则表达式 r.t 能够匹配 “rat、rut、r t”,但是不能匹配root

[] 匹配匹配一个出现在[]中的字符

|  或 敏感词 ab|cd|ed|df

() 提高优先级 a(bc) 实现分组

限定元字符

*     重复零次或多次

+     重复一次或多次

?     重复零次或一次

{n}   重复n次

{n,}  重复n次或多次

{n,m} 重复n到m次

首尾元字符

^ 匹配字符串开始 例如正则表达式 ^when 能够匹配到 ”when in the“ 的开始,但不能匹配到 ”what and when in the“

$ 匹配字符串结束 例如正则表达式 food$ 能够匹配到 “he's  food” 的末尾

简写形式

\b 单词的开始或结束

\d 匹配0-9的数字  \D非数字

\s 任意的空白符 包括tab和换行符 \S大写 非 空白之外的所有字符

\w 匹配字母、数字或下划线 \W 非字母、数字下划线

转义字符

如果想查找元字符本身的话,比如想查找.或者*就会出现问题,因为会解释成其他意思。这时就需要使用\来取消这些字符的特殊意义。

因此需要使用\. \* 查找\本身应该写\\

在javascript中使用正则表达式

创建正则表达式

//字面值
var reg = /\d+/;
//构造函数
var regx = new RegExp(\\d+);

匹配

if(reg.test("45646515"))
{
  alert("OK");
}

if(regx.test("sd"))
{
  alert("ok")
}

提取

var str="853020304@qq.com";
var reg = /([a-zA-Z0-9]+)@([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+)/;

var match = reg.exec(str);
alert(match[0]); //853020304@qq.com 匹配到的对象
alert(match[1]); //853020304 [1][2]分别是各个组
alert(match[2]); //qq.com
alert(match[3]); //.com

循环提取

var str = "12345";
var r = /\d\d/g; //g global 全局匹配
var m = r.exec(str); //12
alert(m);
m = r.exec(str); //34
alert(m);
m = r.exec(str); //null 没有了返回null
alert(m);

var arr = [];
var m = null;
while((m=r.exec(str)) != null) //如果不等于null 继续循环
{
  arr.push(m); //添加到数组
}
alert(arr.length); //[0]=12 [1]=34

替换

string str = <string>.replace(正则表达式或字符串,替换为某字符串);

var str = "ab--c--d--e--f-g";
var result = str.replace(/-+/g,','); //如果不写g 则只替换第一个
alert(result); //ab,c,d,e,f,g

var date = "2015年8月24日";
var result = date.replace(/(\d+)年(\d+)月(\d+)日/,"$1-$2-$3");
alert(result);//2015-8-24

在c#中使用正则表达式

var regx = "^[a-zA-Z0-9]{6,20}$";
if ( ! Regex.IsMatch("abcdef;sd123",regex)
{
  //长度必须6-20,字母和数字
}

常用表达式

匹配身份证:\d{15}|\d{18}

匹配中国邮政编码:[1-9]\d{5}(?!\d)

匹配腾讯QQ号:[1-9][0-9]{4,}

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配首尾空白字符的正则表达式:^\s*|\s*$

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

限制网页表单里的文本框输入内容

只能输入中文:

<input type="text" onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" />

只能输入数字:

<input type="text" onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" />

只能输入数字和英文:

<input type="text" onkeyup="value=value.replace(/[\W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text).replace(/[^\d]/g,''))" />

以上内容就是本文对正则表达式做的详解,希望大家喜欢

(0)

相关推荐

  • 在Python中使用正则表达式的方法

    正则表达式(regular expression)是一种用形式化语法描述的文本匹配模式.在需要处理大量文本处理的应用中有广泛的使用,我没使用的编辑器,IDE中的搜索常用正则表达式作为搜索模式.玩过*nix系统的都知道如sed,grep,awk这类的命令,他们是非常强大的文本处理工具.几乎所有的语言都有对正则表达式的支持,有的直接在语法中支持,有的使用扩展库的形式.python使用的就是扩展库re.     re.search(pattern,string,flag=0) 搜索文本中的匹配的模式是

  • 正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比较

    正则表达式在ios中应用 一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式达到字符串的复杂控制. 二.正则表达式的语法 看一个过滤纯数字的例子 - (BOOL)validateNumber:(NSString *) textString { NSString* number=@"^[0-9]+$"; NSPredicate *numbe

  • 如何用javascript正则表达式验证身份证号码是否合法

    在用户注册页面有些需求要求的比较严格,需要对身份证验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息: 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六

  • javascript常用正则表达式汇总

    javascript常用正则表达式汇总 /** * 检验各种规则 * @param str 检验的内容 * @param cType 预设的检验规则 字符串[ * empty, 检验是否为空 * telphone, 座机手机号码 * allphone, 所有手机号码 * ydphone, 移动手机号码 * ltphone, 联通手机号码 * dxphone, 电信手机号码 * email, 邮箱 * url, 网址 * cn, 汉字 * image, 图片格式 * emscode, 邮政编码 *

  • 常用正则表达式收集

    经常对小的知识点进行整理,有助于知识的积累,加深知识点印象,今天小编就为大家整理了一些关于ASP.NET的常用正则表达式,觉得还不错的朋友记录下来. 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n}$". 只能输入至少n位的数字:"^\d{n,}$". 只能输入m~n位的数字:."^\d{m,n}$" 只能输入零和非零开头的数字:&quo

  • python模块之re正则表达式详解

    一.简单介绍 正则表达式是一种小型的.高度专业化的编程语言,并不是python中特有的,是许多编程语言中基础而又重要的一部分.在python中,主要通过re模块来实现. 正则表达式模式被编译成一系列的字节码,然后由用c编写的匹配引擎执行.那么正则表达式通常有哪些使用场景呢? 比如为想要匹配的相应字符串集指定规则: 该字符串集可以是包含e-mail地址.Internet地址.电话号码,或是根据需求自定义的一些字符串集: 当然也可以去判断一个字符串集是否符合我们定义的匹配规则: 找到字符串中匹配该规

  • 判断颜色是否合法的正则表达式(详解)

    "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$"; 意思是:以#开头,后面是数字和a-f的字符(大写或小写),这个值是6位或3位.要匹配一个3为是为了符合css颜色的简写规则: "#abc"=="#aabbcc" 注意:如果需要进行16位和10位的转换,比如将颜色值转成int存在数据库,如果是6位的颜色没问题,如果是3位的颜色就有问题了,因为当你取回来从10进制转为 16进制的时候,你不知道他应该是3位还是6位. 比如:#

  • Python面向对象总结及类与正则表达式详解

    Python3 面向对象 -------------------------------------------------------------------------------- 一丶面向对象技术简介 •类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. •方法:类中定义的函数. •类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. •数据成员:类变量或者实例变

  • Linux行处理工具之grep 正则表达式详解

    目录 正则表达式在grep应用以及差别 匹配案例 fgrep 总结 之前我们学习了linux grep的基本操作,以及提及了linux grep的孪生兄弟egrep 和 fgrep,这次我们来看下. 在介绍正则表达式之前,我们先来尝试一下,假如有如下文本. 我们想获取空行,应该如何来写呢? 命令: grep ^$ test1 -n 通过上述例子,我们使用正则表达式^$已经成功拿到了第四行数据,那么,这究竟如何解呢,我们细看博文. 正则表达式在grep应用以及差别 grep表达式有三种不同的版本,

  • JS正则表达式详解[收藏]

    JS的正则表达式 //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头.可带数字."_"."."的字串 function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,1

  • 正则表达式详解

    正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式可以干嘛? 1.数据有效性验证,可以对一个字符串进行测试,看该字符串是否符合某种规定. 2.替换文本,可以在文档中将指定的文字删除,或替换为其他文字. 3.根据字符串提取一个子字符串,用来在

  • Java字符串 正则表达式详解

    目录 一.规则表 1.字符 2.字符类 . 3.边界匹配符 4.逻辑操作符 5.量词 二.Pattern类 1.Pattern类的实例获取-compile方法 2.split方法 3.Pattern中匹配标记参数 三.Matcher类 总结 在日常Java后端开发过程中,免不了对数据字段的解析,自然就少不了对字符串的操作,这其中就包含了正则表达式这一块的内容,这里面涉及Java包中Pattern类和Macher类,本篇博客就针对这一块内容和常见的用法进行总结,本博客主要的参考资料是<Java编程

  • Java 正则表达式详解

    如果你不熟悉这个术语,那么"正则表达式"(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式. 正则表达式30分钟入门教程 常用正则表达式 许多语言,包括Perl.PHP.Python.JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级"搜索-替换"功能.那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification R

  • Linux 正则表达式详解

    一.linux文本查找命令 在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令: 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本. 2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本. 3.fgrep : 快速grep,这个版本匹配固定字符串而非正则表达式.并且是唯一可以并行匹配多个字符串的版本. 如下简单的介绍grep命令: 语法格式: grep [options ...] pattern-sp

  • ruby 正则表达式详解及示例代码

    在编写puppet的pp文件中,会用到很多ruby的正则表达式,常用的正则如下: 正则表达式: [codesyntax lang="ruby"] {}: 重复次数(如 {4}表示前面的会重复出现恰好4次) {m,n}: 前面元素最少出现m次,最多出现n次 []: 范围描述符(如 [a-z]表示在a-z范围内的一个字母) \w: 字符或数字,相当于[0-9A-Za-z] \W: 非字母或数字 \s: [\t\n\r\f]空字符,相当于[\t\n\r\f] \S: 非空字符 \d: [0-

随机推荐