MooTools教程(13):正则表达式

2016-02-20 00:41 18 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享MooTools教程(13):正则表达式教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - Web开发 】

今天我们将先简要地看一下正则表达式,然后再看一下MooTools提供的一些让正则表达式更容易使用的功能。如果你还不熟悉怎么使用正则表达式(regular expression(regex)),我强烈建议你花一定量的时间好好看一下这篇文章中的一些链接,尤其是文章结尾更多学习部分的链接。我们今天只是讲一讲正则表达式最基本的用法,正则表达式能做的远远超过我们今天所讲的内容。

基本用法

test()方法

它的简单在于,一个正则表达式可以是一个你想要匹配的简单字符串。尽管JavaScript本身已经为提供了它自己的,MooTools的test()方法更好用一些,在JavaScript中使用正则表达式也更轻松一些。

对于初学者,我们先看一下test()方法最简单的用法,在一个大的字符串中查找特定的字符串:

参考代码:   string_to_test = ;  regular_expression = ;  result = string_to_test.test(regular_expression); 

这和contains()函数的行为基本类似,不过contains是按照完整的单词查找,而正则表达式匹配任何它出现的地方。举个例子,在下面的这个实例中,contains()方法将不返回true,而test()方法将返回true:

参考代码:   string_to_match = ; string_to_match.contains() string_to_match.test();

另外要注意的是,除非你明确指定,正则表达式是大小写敏感的(区分大小写),因此你在一个包含Match的字符串中查找match将返回false。你可以在下面的例子中试一试:

参考代码:   regex_demo = (){     test_string = $().get();     regex_value = $().get();     test_result = test_string.test(regex_value);     (test_result){        $().set(, );    }     {        $().set(, );    }}

注意,在正则表达式中有一些特殊字符,你需要小心使用。如果你把这些字符中的任何一个输入到下面的正则表达式文本框中将会产生错误,这个时候你需要刷新这个页面才能继续下面的演示例子。

- . * + ? ^ $ { } ( ) | [ ] /

要测试的字符串:
正则表达式
 

忽略大小写

在很多情况下,你不需要关心你要匹配的项的大小写。如果你不想要一个正则表达式对大小写敏感,你可以在调用test()方法时添加一个参数i:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)参考代码:   string_to_test = ; string_to_test.test(); string_to_test.test(, );

从技术上讲,你可以传递多个参数给test()方法,但是由于JavaScript现在仅仅只支持3个正则表达式参数(其中2个在test()方法中默认启用),这个期间内你可能仅仅只能使用参数i。你可以继续测试一下大小写匹配的不同:

参考代码:   regex_demo = (){         test_string = $().get();          regex_value = $().get();          regex_param = ;     ($().checked){        regex_param = ;    }          test_result = test_string.test(regex_value, regex_param);          (test_result){        $().set(, );    }     {        $().set(, );    }}

要测试的字符串:
正则表达式
忽略大小写
 

有趣的事情

现在我们已经学会了简单的匹配,我们可以开始看一下正则表达式更令人印象深刻的一些方面。这里不会涵盖一切可能与正则表达式相关的东西我们将挑选一些更直接更有用的功能。

使用^从字符串开始匹配

正则表达式的^运算符允许你在一行字符串的开头匹配,而不管字符的后面有没有相应的匹配。把它放在你要匹配的正则表达式的开头,就像下面这样:

参考代码:   string_to_test =   is_true = string_to_test.match();和你期待的一样,如果这个表达式不是在字符串的开头,这个测试将返回false: string_to_test = ;  is_false = string_to_test.match();

继续测试下面的:

要测试的字符串:
正则表达式
忽略大小写
 

使用$匹配字符串的结尾

$运算符的功能和^的功能类似,但是有两点不一样:

它匹配一个字符串的结尾而不是开头 它放在正则表达式的结尾而不是开头

除此之外,它的所有功能和你期待的一样:

参考代码:   string_to_test = ;  is_true = string_to_test.match();  is_false = string_to_test.match();

通过联合使用这两个运算符,你可以做一个很干净的测试:你可以检查一个字符串是不是只包含你要匹配的表达式内容而没有任何其他东西。

参考代码:   string_to_test = ;  is_true = string_to_test.match();  is_false = string_to_test.match();

要测试的字符串:
正则表达式
忽略大小写
 

字符集

字符集是另外一个正则表达式工具,可以允许你匹配多个特定的字符(A或者Z),以及一系列的字符(A到Z)。据个例子,如果你想测试一个字符串中是否包含单词moo或者boo,通过字符集,你可以在一个正则表达式的方括号[]内放置这两个字符来实现:

参考代码:   first_string_to_test = ;  second_string_to_test = ;  returns_true = first_string_to_test.test(); returns_false = second_string_to_test(); returns_false = first_string_to_test.test();returns_true = second_string_to_test.test() returns_true = first_string_to_test();returns_true = second_string_to_test();

要测试的字符串一: 
要测试的字符串二: 
正则表达式
忽略大小写

为了匹配一系列的字符,你可以单独拿出这一系列字符的开头一个字符和最后一个字符,然后把它们用一个连接符(-)连接起来。你可以通过这种方式定义一系列的数字或者字符:

参考代码:   string_to_test  = ;string_to_test.test(); string_to_test.test();

如果你想在多个字符集中匹配,你可以把你的字符集放在一个方括号[]中,然后用|运算符隔开。

参考代码:   string_to_test = ;string_to_test.test([ [a-d] | [-] ]);

要测试的字符串一: 
要测试的字符串二: 
正则表达式
忽略大小写

escapeRegExp()方法

当你看到正则表达式建立的方法时,你可能觉得要匹配一些特殊字符非常的困难。举个实际的例子,如果你要在一个字符串中查找[stuff-in-here]或者$300时怎么办?你可以通过手动地在每个你要忽略的特殊字符前面添加‘’来实现。

参考代码:   string_to_match = ; string_to_match.test();string_to_match.test(); string_to_match.test();string_to_match.test();

这往往是处理正则表达式头痛的地方,尤其是你对它们没有完全熟悉的时候。作为参考,正则表达式中需要转义的特殊字符包括:

- . * + ? ^ $ { } ( ) | [ ] /

幸运的是,MooTools提供了escapeRegExp()函数,可以确保你的正则表达式被正确地转义。这是另外一个字符串函数,因此你只需要在你开始查找之前,在你要匹配的正则表达式字符串上调用这个方法就行了。

参考代码:   unescaped_regex_string = ;  escaped_regex_string = unescaped_regex_string.escapeRegExp(); 

注意,这意味着你要在正则表达式中使用的任何特殊字符都必须在转义之后再添加上去:

参考代码:   unescaped_regex_string = // 转义这个字符串,从开头匹配var escaped_regex_string = ^ + unescaped_regex_string.escapeRegExp();// escaped_regex_string现在就是^[stuff-in-here]

继续在下面的例子中测试使用escapeRegExp()和不使用的区别:

参考代码:   regex_demo = (){          = $().get();          regex_value = $().get();          ($().checked){                regex_value = regex_value.escapeRegExp();    }          regex_param = ;     ($().checked){        regex_param = ;    }           = .test(regex_value, regex_param);     (){        $().set(, );    }     {        $().set(, );    }}

要测试的字符串一: 
正则表达式
对正则进行转义
忽略大小写

记住,你可能因为使用了没有转义的特殊字符而使演示例子不能正常运行,因此当示例不能运行的时候请不要感到奇怪,因为你一直都在玩这些东西。

更多学习

是一个很好的参考和学习的地方一个值得花一些时间浏览的网站。对于那些熟悉Perl或者熟悉各种语言差异的人,中的关于正则表达式这一节则对一些基本概念解释得非常的好。同样,Stephen Ramsay已经写了一个关于,用一种非常清楚和直接了当的方式讲解了其中的一些概念。

另外一个不错的地方是,它们有数不清的正则表达式例子来完成各种各样的常见任务。最后,如果你有勇气,你应该花一些时间来看一下Mozilla的。这可能非常的多,但是极其有用。如果你想看一下MooTools这边关于正则的内容,可以看一下。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

来源:http://www.tulaoshi.com/n/20160220/1632379.html

延伸阅读
标签: Web开发
一、正则表达式概述  二、正则表达式在VBScript中的应用  三、正则表达式在VavaScript中的应用  四、示例   一、正则表达式概述  如果原来没有使用过正则表达式,那么可能对这个术语和概念会不太熟悉。不过,它们并不是您想象的那么新奇。  请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字...
标签: Web开发
最后写了一个IP地址的正则表达式验证程序。 代码如下: ((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d) 截图如下:
标签: ASP
       最近很多帖子问如何将内容从数据库取出后换行,这就要用到正则表达式。简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在许多编程语言中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等。此外,象JavaScript这种客户端的脚本语言也...
标签: ASP
  14.后向引用 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。请回想一下,对一个正则表 达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中。可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对这部分正则表达式的保存。 所捕获的每个子匹配都按照在正则表达式模式中...
标签: Web开发
首先,我们先看几个实际的例子: 1.验证输入字符是否 javascript: var ex = "^\\w+$"; var re = new RegExp(ex,"i"); return re.test(str); VBScript Dim regEx,flag,ex ex = "^\w+$" Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True regEx.Pattern = ex flag = regEx.Test( str ) C# System...

经验教程

678

收藏

51
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部