正则表达式易于使用而又让人费解,乍一看上去,就像是一行行的乱码,但是它的功能确实又不容小觑。今天整理正则时,纠正了自己的一个误解。

先缕一缕:

正则表达式的两种声明方式:

    字面量、构造器

    (RegExp构造器适用于必须在运行时动态生成正则表达式的情形,并且还涉及到双重转义的问题,因此优先选择字面量方法声明。)

RegExp实例的两个方法:

    exec();//返回一个数组(一个个的捕获组)

    test();//返回一个布尔值

exec()涉及到了正则表达式的分组,他有四种分组:捕获型、非捕获型、向前正向匹配、向前负向匹配。

    捕获型:括号里的内容被匹配后,会保存在RegExp中,如:

        var str = "we are family~~";

        var pattern = /(are)/;

        pattern.test(str);

         alert(RegExp.$1);  //输出:are

    非捕获型:括号里的内容被匹配后,不会保存在RegExp中,如:   

        var str = "we are family~~";

        var pattern = /(?:are)/;

        pattern.test(str);

         alert(RegExp.$1);  //输出:(空)

问题出现了:我习惯性地在用字面量去声明正则表达式时加上开始和结束控制符“/^&/”,结果并没有输出我想要的结果:

        var str = "we are family~~";

        var pattern = /^(are)&/;

        alert(pattern.test(str));  //输出:false

才发现这个/^$/并非我想想中的那个意思。

我们用^、$去框定(这是《JS语言精粹》里的用词,感觉很贴切)一个正则表达式,它指引正则表达式对文本的所有字符进行匹配,并且匹配那些以特定字符开始和结束的字符串

“^”:表示一个字符串的开始,将匹配一个以特定字符开头的字符串,如果上例中str的值为“are we family~~",那么alert(pattern.test(str))就会输出true;

“$”:表示一个字符串的结束,将匹配一个以特定字符结束的字符串,如果上例中str的值为“we family are",那么alert(pattern.test(str))就会输出true;

其次,string的实例也有一个match方法与正则的exec方法很类似,他们的本质是相同的,书写上刚好是顺序颠倒了一下:

        var str = "we are family~~";

        var pattern = /are/;

        alert(pattern.exec(str));  //输出数组:are,are

        alert(str.match(pattern));  //输出一个数组:are,are,该数组与exec方法调用后返回的数组一样

最后想说,正则的使用一定要细心,这么琐碎的东西拼凑起来,去实现各种功能强大的验证,真是可以将我们开发人员的匠心发挥到极致了,并且不严谨的正则表达式是一个常见的安全漏发源地。

【原】JS正则表达式里的控制符的更多相关文章

  1. js正则表达式replace里有变量的解决方法用到RegExp类

    一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...

  2. js正则表达式【原】

    js正则表达式 http://www.w3school.com.cn/js/js_obj_regexp.asp js常用正则表达式 我的自测样例 <HTML> <HEAD> & ...

  3. JS正则表达式大全

    转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...

  4. js正则表达式实例(汇总)

    来源:如何用JAVASCRIPT 正则表达式取出字符串最后一组数字,谢谢  如  30CAC0040 取出40  3SFASDF92 取出92  正则如下://d+$/g   统一空格个数  来源:正 ...

  5. JS正则表达式大全(整理详细且实用)

    JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...

  6. JS正则表达式完整教程

    JS正则表达式完整教程(略长) 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程, ...

  7. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  8. 【正则】精通JS正则表达式,没消化 信息量太大,好文

    http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...

  9. (转)精通 JS正则表达式

    精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证  ...

随机推荐

  1. Windows 托盘区域显示图标

    NOTIFYICONDATA structure 这个结构体包含了向通知区域(底部任务栏右下角区域,下面都称为托盘)显示的信息.需要使用函数Shell_NotifyIcon. 结构体成员 typede ...

  2. 数论 UVA 10780

    数论题目.有关内容:整数质因数分解,N的阶乘质因数分解,整除的判断. 这道题的题意是给你两个数n.m,要求你求出n!所能整除的m^k的最大值的k是多少. 由于数据范围:1<m<5000,1 ...

  3. dashboard

    http://www.htmleaf.com/pins/chart-doc/index.html http://www.flotcharts.org/flot/examples/ https://gi ...

  4. Codeforces Round #162 (Div. 2)

    A. Colorful Stones (Simplified Edition) 模拟. B. Roadside Trees (Simplified Edition) 每次转移时,只需要爬到\(min( ...

  5. div的显示和隐藏

    本文从学习角度出发,仅当做笔记.高手可以忽略本文. 借助div的display属性可以实现div的显示或隐藏,而且在隐藏后不占用原来显示的空间. js控制显示和隐藏的代码: <script ty ...

  6. 从 Bootstrap 2.x 版本升级到 3.0 版本

    摘自http://v3.bootcss.com/migration/ Bootstrap 3 版本并不向后兼容 v2.x 版本.下面的章节是一份从 v2.x 版本升级到 v3.0 版本的通用指南.如需 ...

  7. LINUX软件./configure 配置出现:configure: error: newly created file is older than distributed files!

    当在安装tar源码包的时候出现以下报错如何解决? [root@jieniruyan gst-fluendo-mp3-]# ./configurechecking for a BSD-compatibl ...

  8. 字符数组,字符指针,字符串常量,以及sizeof的一些总结

    1.以字符串形式出现的,编译器都会为该字符串自动添加一个\0作为结尾 如在代码中写"abc",编译器帮你存储的是"abc\0". 2.数组的类型是由该数组所存放 ...

  9. Spring学习 Ioc篇(一 )

    一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现.就从Ioc篇开始学习. ...

  10. 将WeX5部署到自己的Tomcat服务器上

    页面服务UIServer布署 WeX5自带页面服务UIServer的是标准Web应用,可以部署在Java Web应用服务器上.下面介绍如何在Tomcat和WebLogic中部署WeX5的UIServe ...