1、分组之exec返回数组

1》非分组匹配的exec返回数组:

 var pattern =/\d+[a-z]+/;
var str='234google';
alert(pattern.exec(str)); //234google
alert(typeof pattern.exec(str)); //object

2》分组匹配下的exec返回数组

 pattern =/(\d+)([a-z]*)/;
var a =pattern.exec(str);
alert(a); //234google,234,google
alert(a.length); //
alert(a[0]); //234google :返回 匹配到的总的字符串
alert(a[1]); //234 :返回 匹配到的 第一个分组的字符串
alert(a[2]); //google :返回 匹配到的第二个分组的字符串

3》捕获分组和不捕获分组

上面第二种的 分组 匹配下的exec()就是 捕获分组。

不捕获分组,就是在不想捕获的分组匹配字符串前面 加上‘?:’,那么在匹配的时候就不会捕获这个模式字符串

 //下面是捕获分组
var pattern =/(\d+)\s([a-z]+)/;
var str='123 abc';
var a=pattern.exec(str);
alert(a); //123 abc,123,abc //不捕获分组
var pattern2=/(\d+)\s(?:[a-z]+)/; //在分组前面加上 "?:" 表示这个分组 在匹配的时候 不捕获
var str='123 abc';
var a=pattern2.exec(str);
alert(a); //123 abc,123 :注意:abc 这个 分组没有被捕获
alert(a.length); //

4》分组嵌套的捕获

对应嵌套分组的模式字符串,在捕获的时候是“从外向内”进行捕获的。

 var pattern =/(a?(b?(c?)))/;
var str='abc';
var a =pattern.exec(str); // 分组嵌套匹配 的获取是 “从外向内” 进行捕获的
alert(a[0]); //abc 返回:匹配到的 总 字符串
alert(a[1]); //abc 返回:返回第一个分组 的匹配 字符串(从外向内)
alert(a[2]); //bc 返回:第二个分组 匹配到的字符串
alert(a[3]); //c 返回:返回第三个分组匹配到的 字符串

2、前瞻捕获

匹配字符串的时候只匹配,符合自己要求的字符串,捕获也是同样的

先看示例:

 var pattern =/goo/;
var str='goobb';
alert(pattern.exec(str)); //返回 goo

如果只想要,goo后面的 是gle的 时候才匹配成功和 捕获,就要使用前瞻捕获进行限制

 pattern=/goo(?=gle)/;   //前瞻匹配:要求 goo 后面必须是  gle 才能匹配上
var str='goobb';
alert(pattern.exec(str)); //null
alert(pattern.test('google'));//true
alert(pattern.exec('google')); //goo

3、正则表达式中特殊字符的匹配

如果 匹配字符串中  含有 正则表达式中 特殊字符串,那么就 要用 \ 进行转义 之后才能使用,否则会报错

 var pattern =/\./;
var str='.';
alert(pattern.test(str));//true

4、常用正则表达式练习

写正则表达式的时候,最好先把测试的示例,然后总结出需求,然后再写正则表达式

1》邮编的验证

先写出一个示例:

var str='This is 124000!';  //由此可知要求是:6位字符, 要求都是数字  ,第一 字符大于 0

 var pattern =/[1-9][0-9]{5}/;  //如果想要  除了 邮政编码 什么都不需要,就 可以 加上 行首和行尾 匹配 '^$'
var str='This is 124000!'; //由此可知要求是:6位字符, 要求都是数字 ,第一 字符大于 0
alert(pattern.test(str)); //true

2》 压缩包 的匹配

示例:

var str='12_3.rar';    //要求:文件名:字母、数字、_,,然后是 . ,,最后是 zip或者 rar

 var pattern =/^(\w+)\.(zip|rar|7z|gz)$/;  //限定 行首和行尾 匹配
var str='12_3.rar'; //要求:文件名:字母、数字、_,,然后是 . ,,最后是 zip或者 rar alert(pattern.test(str));

3》 删除多余的 空格

删除字符串中所有的空格,这个很简单

var pattern =/\s/g;
var str='aa bbb cccc dd';
alert(str.replace(pattern,''));

删除首尾的空格 

1)最简单、最shit的写法

 var pattern =/^\s+/;
var str=' goo gle ';
var result =str.replace(pattern,'');
pattern =/\s+$/;
result =result.replace(pattern,'');
alert('|' +result + '|');

2)使用惰性模式的捕获

 var pattern =/^\s+(.*?)\s+$/;   //加上 ? 使用惰性模式,(因为贪婪模式:会将 后面的空格也匹配到 分组的模式字符串 里面),,所以在先 匹配首位之后,,再匹配 分组中的时候 不在 匹配 行尾匹配到的字符串
var str=' goo gle ';
//使用 exec()的 捕获
var result =pattern.exec(str)[1];
alert('|' + result + '|');

3)使用分组获取

 var pattern =/^\s+(.*?)\s+$/;
var str=' goo gle ';
var result =str.replace(pattern,'$1'); //取到 分组 匹配的 字符串然后 替代字符串
alert('|' + result + '|');

4》简单单子邮箱的验证

示例:

var str='gg60.shit@gmail.com';   //格式:'用户名(字母、数字、 .

 var pattern =/^([\w\.\-]+)@([\w\-]+)\.([a-zA-Z]{2,4})$/;
var str='gg60.shit@gmail.com'; //格式:'用户名(字母、数字、 . 、-、_)@域名(字母、数字、-).com/cn等(字母(2-4位))'
alert(pattern.test(str));

js之正则表达式(下)的更多相关文章

  1. js常用正则表达式2

    字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对 ...

  2. Js用正则表达式验证字符串

    js 常用正则表达式表单验证代码 作者: 字体:[增加 减小] 类型:转载 js 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...

  3. AngularJS进阶(十三)JS利用正则表达式校验手机号

    JS利用正则表达式校验手机号 注:请点击此处进行充电! 绪 由于项目需求,需要在前端实现手机号码的校验.当然了,对于基本的格式校验应该放在客户端进行,而不需要再将待校验的手机号发送至服务端,在服务端完 ...

  4. JS常用正则表达式备忘录

    摘要: 玩转正则表达式. 原文:JS常用正则表达式备忘录 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 正则表达式或"regex"用于匹配字符串的各个部分 下面是 ...

  5. JS的正则表达式简介

    1.JS的正则表达式 1.1 简介 JS的正则表达式比较简单,总体上只分为两个功能:一个是test——用于匹配字符串是否符合规定的正则表达式规则:另外一个是exec——用于获取匹配到的数据. 1.2 ...

  6. Js与正则表达式

    原本接着上面的章节,这一章节应该是写 Jquery事件的,由工作需要,暂时横插一篇正则表达式的学习,这里是边学边记录,错误之处,希望指正,提拔一二,不甚感激! 此章节有 1.1 正则表达式的定义 1. ...

  7. js常用正则表达式,滚蛋吧!你们测试组bug,让你挑

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. JS 之正则表达式

    字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对 ...

  9. js课程 4-12 js中正则表达式如何使用

    js课程 4-12 js中正则表达式如何使用 一.总结 一句话总结: 1.js正则表达式手册取哪里找? w3cschool或者菜鸟教程->找到js正则表达式->完整的RegExp参考手册这 ...

  10. js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/)

    js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/) 一.总结 1.RegExp对象有三个方 ...

随机推荐

  1. VB.NET 小程序 2

    Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ...

  2. JavaScript--DOM事件(笔记)

    第1章 事件流1-1.事件冒泡:事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收; 然后逐级向上传播至最不具体的那个节点(文档);1-2.事件捕获:不太具体的节点应该更早接收到事件,而最具 ...

  3. 研究validation插件到现在的感受

    1.比较累 2.看了几十个页面参考是有的,要抓住问题的实质,实质在于要改插件代码.因为它本身不提供这个方法. 3.对了,还没有描述这个问题,问题就是再次验证时,成功的样式不消失.解决方法如下: 修改了 ...

  4. 零基础Android学习笔记-01 安卓开发环境搭建

    安卓开发环境搭建. 1.首先准备JDK,从官网找到JDK下载地址,原来做.NET不熟悉JAVA,干脆用最新的,下载了JDK 1.7的版本.原来装过1.5还要配置环境变量什么的.但1.7好像很给力,装好 ...

  5. C#创建Windows服务入门图解(VS2010)

    C#创建Windows服务入门图解(VS2010) Windows服务大家都知道,比如Audio.Theme都是大家比较熟悉的服务,他们可以设为自动启动的,并且在注册表的开机自启动项里是没有痕迹的.所 ...

  6. iOS-Andriod百度地图仿百度外卖-饿了么-选择我的地址-POI检索/

    http://zanderzhang.gitcafe.io/2015/09/19/iOS-Andriod百度地图仿百度外卖-饿了么-选择我的地址-POI检索/ 百度外卖选择送货地址: 饿了么选择送货地 ...

  7. MVC为模型增加正则表达式

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0sAAACJCAIAAABy7jQDAAAVTUlEQVR4nO3dv640yVnH8bmJvQpLBI

  8. angularjs中的directive

    正在初学angularjs中,在网上看到一篇详细讲解directive指令的文章,于是就记录在这里和大家一起分享 angular.module('docsTransclusionExample', [ ...

  9. 济南学习 Day2 T2 am

    [问题描述]有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[l,r]中则你比较厉害.求你比较厉害的概率.[输入格式]第一行有三个数N,l,r,含义如上描述.接下来一行有

  10. Fedora 19 配置参考

    1. 安装完Fedora 19之后,第一件事不是升级系统,而是添加源. 下载我配置好的源,非常全面,适用Fedora 19 x86_64.点我下载 打开终端,切换到repo.zip所在目录:mv re ...