一、正则的两种写法:

var re = /a/;               //一般情况下都用简写的方式  性能好
var re = new RegExp('a'); //需要传入参数的时候用

二、转义字符:

\n   换行
\r 制表
\t 回车
\s 空格
\S 非空格
\d 数字
\D 非数字
\w 字符 ( 字母 ,数字,下划线_ )
\W 非字符
. 任意字符
\. 真正的点
\b 独立的部分 ( 起始,结束,空格 )
\B 独立的部分
\1 重复的第一个子项
\2 重复的第二个子项

三、正则的方法:

1、test:正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假;test的写法 : 正则.test(字符串)

var str = '374829348791';

var re = /\D/;

alert( re.test( str ) );   // false 匹配失败

2、search : 正则去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回 -1(和字符串里面的indexOf方法很像);search的写法 : 字符串.search(正则)

正则中的i:正则中默认是区分大小写的;如果不区分大小写的话,在正则的最后加标识 i

var str = 'abcdef';

var re = /B/i;

//var re = new RegExp('B','i');   //也可以写成这种形式

alert( str.search(re) );   //true

3、match : 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null;match的写法 : 字符串.match(正则)

正则默认:正则匹配成功就会结束,不会继续匹配;如果想全部查找,就要加标识 g(全局匹配)

量词 : 匹配不确定的位置;+ : 至少出现一次(>=1次 都会被找到)

var str1 = 'asdhfgsaghd12332slsd34';

var re = /\d+/g;

alert( str1.match(re));    //[12332,34]

4、replace:正则去匹配字符串,匹配成功的字符去替换成新的字符串;replace的写法 : 字符串.replace(正则,新的字符串)

var str = 'aaa';
var re = /a+/g; //此时'a'替换了'aaa' str = str.replace(re,'b'); alert(str); //'b'

四、匹配子项 : 小括号 ()  (还有另外一个意思,分组操作)

var str = '2013-6-7';

var re = /(\d+)(-)/g;

str = str.replace(re,function($0,$1,$2){
//第一个参数:$0(整体)
//第二个参数 : $1(第一括号里的正则)
//第三个参数 : $2(第二个括号里的正则) //alert( $2 ); //return $1 + '.'; return $0.substring(0,$0.length-1) + '.'; }); alert( str ); //2013.6.7

五、字符类 : 一组相似的元素   [] 中括号的整体代表一个字符

var str = 'abdc';

var re = /a[bde]c/;    //字符类中的是“或”的关系 但是整体的位数要和字符串的一致

alert( re.test(str) );  //true

排除 : ^ 如果^写在[]里面的话,就代表排除的意思

var str = 'abc';

var re = /a[^bde]c/;        //取反 

alert( re.test(str) );   //false

六、找出字符串中最多的字符和个数:

var str = 'assssjdssskssalsssdkjsssdss';

var arr = str.split('');

str = arr.sort().join('');

//alert(str);

var value = '';
var index = 0; var re = /(\w)\1+/g; str.replace(re,function($0,$1){ //alert($0); if(index<$0.length){
index = $0.length;
value = $1;
} }); alert('最多的字符:'+value+',重复的次数:'+index);

七、量词:出现的次数,常用的量词有:

{n,}  至少n次
* 任意次 {0,}
? 零次或一次 {0,1}
+ 一次或任意次{1,}
{n} 正好n次

八、去掉前后空格:^开始  $结束

var str = ' hello ';

function trim(str){

    var re = /^\s+|\s+$/g;

    return str.replace(re,'');

}

alert( '('+trim(str)+')' );

九、常用的正则例子(高级表单验证)

匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*$
Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
网址:[a-zA-z]+://[^\s]*
QQ号:[1-9][0-9]{4,9}
邮政编码:[1-9]\d{5}
身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x

js正则表达式详解的更多相关文章

  1. js正则表达式详解及示例讲解

    所谓正则表达式,简单来说就是一种规则,一种计算机能读懂的规则.js中的正则表达式语法是Perl5(一种很早的编程语言)的正则语法的子集.本文将在基础知识的基础上添加示例帮助快速理解正则表达式. 学习正 ...

  2. JS 正则表达式详解

    在此提供相关的链接,请访问: http://www.cnblogs.com/dolphinX/p/3486214.html http://www.cnblogs.com/dolphinX/p/3486 ...

  3. JS 正则表达式^$详解,脱字符^与美元符$同时写表示什么意思?

     壹 ❀ 引 对于初学正则的同学来说,^$这两个看似简单的字符却在使用中总让匹配结果超出我们的预期,^什么时候表示行首什么时候表示反义?^ $两个一起写表示什么含义?今天我们就来详细聊聊这两个字符. ...

  4. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  5. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  6. Java 正则表达式详解_正则表达式

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  7. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

  8. Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式

    Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...

  9. (转)linux正则表达式详解

    linux正则表达式详解 http://blog.csdn.net/wuliowen/article/details/64131815 1:什么是正则表达式: 简单的说,正则表达式就是处理字符串的方法 ...

随机推荐

  1. HBase架构

    文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6573817.html  转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...

  2. spring boot gradle build:bootRepackage failed

    When running 'gradle clean build' on my spring boot project (version 1.3.6.RELEASE) on windows 10 (a ...

  3. 小梦windows phone 8.1开发:语音朗读

    使用SpeechSynthesizer类可以实现文本朗读功能,位于 Windows.Media.SpeechSynthesis命名空间.有了它我们就可以实现有声小说了,是不是很爽.下面给出一个将文本块 ...

  4. windows phone 8.1开发SQlite数据库引用安装

    原文出自:http://www.bcmeng.com/windows-phone-sqlite/ windows phone 8.1开发SQlite数据库引用安装 第一步: 安装SQlite forw ...

  5. Unity 3D Framework Designing(1)—— MVVM 模式的设计和实施(Part 1)

    初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到 ...

  6. 【C语言】模拟实现atoi函数

    atoi(表示 ascii to integer)是把字符串转换成整型数的一个函数. atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( ...

  7. Selenium测试专项一班隆重开班

    Selenium测试专项一班隆重开班 应广大测试技术人员要求,以及企业技术需求.Selenium提前一周开课了,只针对合作的每家企业提供1-2个参训名额.预计培训60人次.但报名人数却远远超出我们预期 ...

  8. poptest老李谈Socket

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...

  9. 2.Maven 使用

    1 Maven使用 1.1 编写POM 就像Make的Makefile,Ant的build.xml一样,Maven项目的核心是pom.xml. 首先创建一个名为hello-world的文件夹(本书中各 ...

  10. Spring Hiernate整合

    Spring整合Hibernate 一.整合目标 1.由IoC容器管理Hibernate的SessionFactory2.让Hibernate使用Spring的声明式事务 二.整合步骤 先加入Hibe ...