复杂模式:

*分组:

var reDogDog=/dogdog/g;---------------var reDogDog=/(dog){2}/g;

*引用:(注意带括号和不带括号)

var sMatch="#123456789";
var reNum=/(#(\d+))/;
reNum.test(sMatch);
alert(RegExp.$1+" "+RegExp.$2);

var sChange="1234 5678";
var reMatch=/(\d{4})  (\d{4})/;//注意中间要加空格
var newStr=sChange.replace(reMatch,"$2 $1");//不是“RegExp.$2  RegExp.$1”

alert(RegExp.$1+" "+RegExp.$2);//注意此行是输出:1234 5678,有种把上面的正则给覆盖的感觉(深入的机制不清楚)
alert(sChange+" "+newStr);

*候选:管道符  |

var s1="red";
var s2="blue";
var reS1S2=/(red|blue)/;
alert(reS1S2.test(s1));
alert(reS1S2.test(s2));

*非捕获性分组

var sToMatch="#123456789";

var reNumbers=/#(?:\d+)/;

reNumbers.test(sToMatch);

alert(RegExp.$1);//输出“ ”,因为该分组是非捕获性的

*前瞻

var sToMatch1="bedroom";
var sToMatch2="bedding";
var reBed=/(bed(?=room))/;
alert(reBed.test(sToMatch1));
alert(RegExp.$1);
alert(reBed.test(sToMatch2));

结果:true bed false

*边界:^行开头   $行结尾    \b单词的边界    \B非单词的边界

var sToMatch="Important word is the last one.";
var reLastWord=/(\w+).$/;
reLastWord.test(sToMatch);
alert(RegExp.$1);

*多行模式(下面的例子觉得有问题,去掉g,结果不是我想的那样)

var sToMatch="First second\nthird fourth\nfifth sixth";
var reLastWordOnLine=/(\w+)$/g;
var arrWords=sToMatch.match(reLastWordOnLine);
alert(arrWords);

《JS高程》中的正则的复杂模式的总结的更多相关文章

  1. JS高程中的垃圾回收机制与常见内存泄露的解决方法

    起因是因为想了解闭包的内存泄露机制,然后想起<js高级程序设计>中有关于垃圾回收机制的解析,之前没有很懂,过一年回头再看就懂了,写篇博客与大家分享一下. #内存的生命周期: 分配你所需要的 ...

  2. JS中的正则应用

    如果还未掌握正则基础知识可先看另一篇:正则笔记-忘记就来看 创建方法: 直接量语法:/pattern/attributes 创建 RegExp 对象的语法:new RegExp(pattern, at ...

  3. Python3 实现 JS 中 RSA 加密的 NoPadding 模式

    前因后果之哗啦啦废话连篇: 这几天本人在 Python 做某网站登陆的时候,发现其登陆时用户名和密码被加密了 F12 仔细看了一下,发现是调用了一个 js 的 rsa 加密库,页面 dom 中有 rs ...

  4. js进阶js中支持正则的四个常用字符串函数(search march replace split)

    js进阶js中支持正则的四个常用字符串函数(search march replace split) 一.总结 代码中详细四个函数的用法 search march replace split 二.js进 ...

  5. 【面试题】JS使用parseInt()、正则截取字符串中数字

    JS使用parseInt()和正则截取字符串中数字 点击打开视频讲解更加详细 parseInt() 函数 定义和用法 parseInt() 函数可解析一个字符串,并返回一个整数. 当参数 radix ...

  6. JS 正则表达式中的特殊字符

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  7. 《JS高程》创建对象的7种方式(完整版)

    一.理解对象 ECMA-262定义对象:无序属性的集合,其属性可以包含基本值.对象或者属性. 我们可以把 ECMAScript 的对象想象成 散列表:无非就是一组 名值对,其中值可以是数据或函数. 创 ...

  8. javascript和php中的正则

    正则: var subStr=str.replace(reg/str,'');   不改变原来的字符串返回替换后的字符窜; 如果不用正则,只能替换第一个匹配到的; var subStr=str.mat ...

  9. 深入理解JS函数中this指针的指向

    函数在执行时,会在函数体内部自动生成一个this指针.谁直接调用产生这个this指针的函数,this就指向谁. 怎么理解指向呢,我认为指向就是等于.例如直接在js中输入下面的等式: console.l ...

随机推荐

  1. tableView优化性能

    在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信. Safari.App Store.iTunes.Game Cent ...

  2. final评价Ⅱ

    1.飞天小女警: 礼物挑选这个项目相比之前的发布功能更完善了些,但是整体界面还是不太美观,用户界面上呈现出的选项字不够清晰,使用起来不是很方便,但是增加了猜你喜欢的功能,可以根据用户的浏览记录猜测用户 ...

  3. MFC编程 | 非模态对话框的定义

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // 非模态对话框的定义 // 通过单文档菜单调用一个非模态窗口 1.首先在工程里插入一个对话框(如:IDD_DLG_TEST ...

  4. java多线程基础

    多线程基础 读书练习照猫画虎 package Threadtest; import java.util.Date; import java.util.concurrent.ArrayBlockingQ ...

  5. Codeforces Round #361 Jul.6th A题 ☺译

    A.迈克和手机 当迈克在沙滩上游泳的时候,他意外的把他的手机扔进了水里.不过你甭担心因为他立马买了个便宜些的代替品,这个代替品是老款九键键盘,这个键盘只有十个等大的数字按键,按以下方式排列: 1 2 ...

  6. requestAnimationFrame

    (function() { var lastTime = 0; var vendors = ['webkit', 'moz']; for(var x = 0; x < vendors.lengt ...

  7. This is a TEST

    I LOVE LINUX && PHP VERY MUCH AND MORE, ALL OPEN SOURCE PROJECT

  8. Memcached 数据缓存系统

    Memcached 数据缓存系统 常用命令及使用:http://www.cnblogs.com/wayne173/p/5652034.html Memcached是一个自由开源的,高性能,分布式内存对 ...

  9. Javascript模式(第五章对象创建模式)------读书笔记

    一 命名空间模式 1 命名空间模式的代码格式 var MYAPP={ name:"", version:"1.0", init:function(){ } }; ...

  10. qt的moc,uic,rcc命令的使用

    qt是一个c++的界面库,其特点就是其源码可以跨平台编译,这样在写自己的小工具时可以方便地在windows,mac或linux环境下移植了.在windows下写c++程序当然选vs,在mac下写程序当 ...