正则

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

手机,身份证,邮箱正则常见案例

手机:/(^1[3|4|5|7|8]\d{9}$)|(^09\d{8}$)/

邮箱:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/

第一代 身份证:/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$/

第二代身份证:
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/

构造函数方式

var reg= new RegExp("study");

var reg=new RegExp("study","ig");

常量方式

var reg=/study/ 等价于var reg= new RegExp("study");

属性

global RegExp对象是否具有标志 g。 全局 ignoreCase RegExp对象是否具有标志 i。 忽略大小写 source 正则表达式的源文本。 Multiline RegExp 对象是否具有标志 m。 不只匹配一行。

方法

exec(字符串) 检索字符串中指定的值。返回找到的值,如果没有匹配到,则返回null。 test (字符串) 检索字符串中指定的值。返回 true 或 false。

使用RegExp对象的字符串函数

var pattern = /good/ig; //全局搜索 var str = 'good good study!,day day up!'; 1,使用 match 方法获取获取匹配数组a alert(str.match(pattern)); //匹配到两个 good,good 2,使用 search 来查找匹配数据 alert(str.search(pattern)); //查找到返回位置,否则返回-1 3,使用 replace 替换匹配到的数据(找到并替换) alert(str.replace(pattern, 'hard')); //将Good替换成了hard 4,使用 split 拆分成字符串数组, var arr = str.split(pattern); //将按空格拆开字符串成数组

特殊字符

^ 匹配一行的开头,/^a/匹配"abc",而不匹配“bca“
$ 匹配一行的结尾,/a$/匹配“bca",而不匹配"abc"
. 匹配单个字符,除了换行和行结束符,等价于[^\n]
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba?/将匹配b,ba
x|y 匹配x或y ,/a|b/ 将匹配只要出现a或者b的字符串,不含a与b的不匹配
{n} 精确匹配n次 ,/d{4}/ 将匹配,出现连续4个d的字符串
{n,} 匹配n次以上 ,/d{4,}/将匹配,出现连续4个及其以上多个d的字符串
{n,m} 匹配n-m次,/d{4,6}/将匹配,出现连续4到6个d的字符串
[xyz] 匹配这个集合中的任一一个字符,如:[a-z] 表示小写a到小写z范围的字符。
[^xyz] 不匹配这个集合的任何一个字符 ,同样可以写范围,如:[^a-z]
(red|blue|green) 将一些正则匹配规则合成一个小组。
\d 匹配一个数字字符,/\d/ 等价于 /[0-9]/
\D 匹配一个非数字字符,/\D/ 等价于 /[^0-9]/
\w 匹配一个可以组成单词(变量)的字符(包括字母,数字,下划线)等价于[a-zA-Z0-9_]
\W 匹配一个不可以组成单词的字符
\n 匹配一个换行符
\f 匹配换页符。
\r
匹配一个回车符
\t 匹配一个制表符
\v 匹配一个重直制表符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\b 匹配一个单词的边界 (单词是以空格分割的)
\B 匹配一个单词的非边界
\0 匹配NUL 字符。
\ddd 匹配以八进制数 ddd 规定的字符。 Ru:var reg = /\141/; 等价于 var reg = /a/;
\xdd 匹配以十六进制数 dd 规定的字符。
\uxxxx 匹配以十六进制数 xxxx 规定的 Unicode 字符。

直接量字符(转义字符)

\f 换页符
\n 换行符
\r 回车
\t 制表符
\v 垂直制表符
\/ 一个 / 直接量
\\ 一个 \ 直接量
\. 一个 . 直接量
\* 一个 * 直接量
\+ 一个 + 直接量
\? 一个 ? 直接量
\| 一个 | 直接量
\( 一个 ( 直接量
\) 一个 ) 直接量
\[ 一个 [ 直接量
\] 一个 ] 直接量
\{ 一个 { 直接量
\} 一个 } 直接量
\- 一个-直接量

量词

c{n} 匹配包含 n 个 c 的序列的字符串。
c{m,n} 匹配包含 m 到 n 个 c 的序列的字符串。
c{n,} 匹配包含至少 n 个 c 的序列的字符串。
c+ 匹配任何包含至少一个 c 的字符串,等价于c{1,} 。
c* 匹配任何包含零个或多个 c 的字符串,等价于c{0,}
c? 匹配任何包含零个或一个 c 的字符串,等价于 c{0, 1}
c$ 匹配任何结尾为 c 的字符串。
^c 匹配任何开头为 c 的字符串。
?=c 匹配任何其后紧接指定字符串 c 的字符串。
对其后紧跟 "all" 的 "is" 进行全局搜索.
var str="Is this all there is"; var patt1=/is(?= all)/g;
?!c 匹配任何其后没有紧接指定字符串 c 的字符串。
对其后没有紧跟 "all" 的 "is" 进行全局搜索:
var str="Is this all there is"; var patt1=/is(?! all)/gi;

正则封装

function checkAll(type,value){ //type是你要验证的类型(自定),value验证该值
switch(type) { //判断该类型
case 'Phone': //如果类型是Phone的话,就执行下面的判断
if((/^1[34578]\d{9}$/.test(value))){
return true;
}else{
return false;
}
break;
case 'Email':
if(!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value))){
return false;
}else{
return true;
}
break;
}
}

正则&转义字符&特殊字符的更多相关文章

  1. js正则验证特殊字符

    js正则验证特殊字符 方案一 var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im, regCn = /[·!#¥(--):: ...

  2. php 正则替换特殊字符 和检测是否是中文

    如果是只想输入中文的话,就这么写,要注意是分gb2312和utf-8的哦: gb2312:if(!preg_match("/^[".chr(0xa1)."-". ...

  3. JS用正则替换特殊字符

    'abcabce'.replace(/abc/g,'') "e" 'abcabce$E$'.replace(/$E$/g,'') "abcabce$E$" 'a ...

  4. [转]bat中的特殊字符,以及需要在bat中当做字符如何处理

    bat中的特殊字符,以及需要在bat中当做字符如何处理 批处理.Bat 中特殊符号的实际作用,Windows 批处理中特殊符号的作用: @ \\隐藏命令的回显. ~ \\在for中表示使用增强的变量扩 ...

  5. bat中的特殊字符,以及需要在bat中当做字符如何处理

    bat中的特殊字符,以及需要在bat中当做字符如何处理 (2014-02-27 21:16:55) 转载▼ 标签: bat 特殊字符 分类: develop bat中的特殊字符,以及需要在bat中当做 ...

  6. 正则、grep、sed、awk

    每次用到正则都要蛋疼一下,索性总结一下在这里. 正则 正則表達式主要分为基础正则和扩展正则.注意,正则和一般命令行输入的命令的通配符不同.正则仅仅使用于支持这样的表示法的工具,如:vi,grep,se ...

  7. 0426JavaSE01day02.txt=========正则、Object、包装类详解

    正则表达式 基本正则表达式:正则表达式简介.分组(). "^"和"$" String正则API:matches方法.split方法.replaceAll方法 O ...

  8. 处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]>

    处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]> // xml 转义特殊字符 如&'" <![CDATA[&quo ...

  9. javascript基础7(正则及表单验证)

    1.正则的概念     JS诞生的目的是什么?     就是为了做表单验证.       在JS未出现以前,表单的信息验证需要传输给后台,让后台做数据验证处理之后,再返回给前端页面处理的结果.在带宽有 ...

随机推荐

  1. Linux安装mongoDB步骤和方法

    Linux安装mongoDB步骤和方法 下载mongoDB数据库 mongodb-linux-x86_64-3.0.15.tgz 存放到linux文件夹中 ftp软件直接拖上去 解压文件夹(解压后,会 ...

  2. 网络流24题 负载平衡(DCOJ8013)

    题目描述 G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 文件 ...

  3. python 并发之进程

    一.什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...

  4. oracle函数 TO_NUMBER(X[[,c2],c3])

    [功能]将字符串X转化为数字型 [参数]c2,c3,字符型,参照to_char() [返回]数字串 [相反] to_char(date[[,c2],c3]) [示例] select TO_NUMBER ...

  5. 04使用harbor配置私仓

    安装harbor之前,需要安装好Python,Docker,DockerCompose.Python需要2.7以上的版本,Docker需要1.10以上的版本:Docker Compose 需要1.6. ...

  6. @codeforces - 141E@ Clearing Up

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 N 个点 M 条边的图,每条为黑色或者白色. 现在让你 ...

  7. Spring AOP 的实现 原理

    反射实现 AOP 动态代理模式实例说明(Spring AOP 的实现 原理)   比如说,我们现在要开发的一个应用里面有很多的业务方法,但是,我们现在要对这个方法的执行做全面监控,或部分监控.也许我们 ...

  8. Lambda plus: 云上大数据解决方案

    本文会简述大数据分析场景需要解决的技术挑战,讨论目前主流大数据架构模式及其发展.最后我们将介绍如何结合云上存储.计算组件,实现更优的通用大数据架构模式,以及该模式可以涵盖的典型数据处理场景. 大数据处 ...

  9. Facebook F8|闲鱼高级技术专家参会分享

    笔者代表闲鱼参加了Facebook在4月30日举行的为期二天的F8大会,地点加州.将会议概括和一些收获分享给大家.对国内开发者而言,Facebook的产品设计.社区.VR/AR等有一些借鉴意义:对海外 ...

  10. 洛谷P2709 小B的询问 莫队

    小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数.小 ...