Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3847501
  • 博文数量: 146
  • 博客积分: 3918
  • 博客等级: 少校
  • 技术积分: 8584
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-17 13:52
个人简介

个人微薄: weibo.com/manuscola

文章分类

全部博文(146)

文章存档

2016年(3)

2015年(2)

2014年(5)

2013年(42)

2012年(31)

2011年(58)

2010年(5)

分类: 系统运维

2012-06-17 18:10:32

    正则表达式真的是一个比较重要的工具,日常工作中有太多需要用到正则表达式的场景。UI检测用户输入的合法性是一个比较容易想到的场景,比如请用户输入一个IP地址,或者输入一个文件的sha1值。由于IP地址 sha1是有一定规则的,输入检查是不可缺少的一项。如何判断一个用户的输入是否合法,正则表达式发挥作用的场景就到了。

    好多语言都支持正则表达式,当然据说Perl语言是支持的最好的语言,无奈我没怎么学过。我在日常工作中遇到过C语言对正则表达式的支持,JS PHP 也遇到过。本文主要讲述JS对正则表达式的支持。

    JS 通过RegExp类型来支持正则表达式。
    
    1 格式一:
    var expression = /pattern/ flags;
    如下面的代码段:

  1.    var pattern=/dat/i



    搜索dat,flag为i表示不区分大小写,即Dat,DAT,dAT,这些都是匹配的。

    2 格式二:
    var expression = new RegExp(pattern,flags);
    如  :

  1.    var pattern = new RegExp("dat",'i');


    和格式一中的示例效果是一样的。

    正则表达式中支持下面三个标志位
    g:全局模式,即模式应用于整个字符串,而不是找到第一个匹配项就停止。
    m:表示多行,即到达一行文本末尾时还会继续查找下一行是否存在匹配项。
    i:不区分大小写。
    

点击(此处)折叠或打开

  1. <html>
  2. <head>
  3.     <title>RegExp Constructor Properties Example</title>
  4.     <script type="text/javascript">
  5.     
  6.         var text = "the book is about DaTabase";
  7.         var pattern = /dat/i;
  8.         
  9.         if (pattern.test(text)){
  10.             alert("found");
  11.         }

  12.     </script>
  13. </head>
  14. <body>

  15. </body>
  16. </html>

点击(此处)折叠或打开

  1. <html>
  2. <head>
  3.     <title>RegExp Constructor Properties Example</title>
  4.     <script type="text/javascript">
  5.     
  6.         var text = "the book is about DaTabase";
  7.         var pattern = new RegExp("dat","i");
  8.         
  9.         if (pattern.test(text)){
  10.            alert("found");
  11.         }

  12.     </script>
  13. </head>
  14. <body>

  15. </body>
  16. </html>
    实例代码中其实给出了如果检测字符串中有没有相应模式的方法,就是: pattern.test(string),如果找到相应的匹配项,则返回true,没找到,则返回false。在我们的实例当中,因为text字符串中存在匹配项DaT,所以返回了true,浏览器打出了found的警告框。

         
     
    当然了,我这个只是个例子,比较简单的描述JS对正则表达式的支持。要想获取复杂的功能,就要构造相应的pattern,利用pattern来检测时候存在匹配项。至于正则表达式部分我本身也不是很精通,而且不是本文的concern,所以我就不写了。

参考文献:
1 Javascript 高级程序设计
2 正则表达式 百度百科

阅读(3168) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

Heartwork2012-06-23 17:32:36

我们以前的项目就是js+perl的,了解一点,呵呵。

perl最大的亮点就是内置正则表达式,不过这一点目前很多动态语言也都支持了。

BTW: perl本身的调试环境和提供的文档也挺友好的(稍微有点罗嗦)。

Bean_lee2012-06-23 01:08:04

Heartwork: perl的语法和js挺像的:
expression =~ /pattern/flags

另外,bash从4.0开始也支持内置的正则表达式了。.....
兄弟好眼力,我看的教材就说,JS的风格和Perl很相似。 可惜对Perl没有研究。

Heartwork2012-06-22 23:37:25

perl的语法和js挺像的:
expression =~ /pattern/flags

另外,bash从4.0开始也支持内置的正则表达式了。