网络编程
位置:首页>> 网络编程>> JavaScript>> Mootools 1.2教程(13)——正则表达式

Mootools 1.2教程(13)——正则表达式

作者:Fdream 来源:Fdream博客 发布时间:2008-12-07 20:25:00 

标签:Mootools,教程,Mootools,1.2,正则表达式,

原文地址:30 Days of Mootools 1.2 Tutorials - Day 13 - Regular Expressions

MooTools和正则表达式

阅读上一讲:Mootools 1.2教程(12)——用Drag.Move实现拖拽和拖放

正则表达式30分钟入门教程

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

基本用法

test()方法

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

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

参考代码: 

// 我们要在这个字符串中查找 
var string_to_test = "Match anything in here"; 

// 我们要查找的正则表达式 
var regular_expression = "anything"; 

// 应用正则表达式,返回true或者false 
var result = string_to_test.test(regular_expression); 

// result现在为true


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

参考代码: 

var string_to_match = "anything"; 

// 返回false 
string_to_match.contains('nything') 

// 返回true 
string_to_match.test('nything');


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

参考代码: 

var regex_demo = function(){ 
    var test_string = $('regex_1_value').get('value'); 
    var regex_value = $('regex_1_match').get('value'); 
    var test_result = test_string.test(regex_value); 

    if(test_result){ 
        $('regex_1_result').set('html', "matched"); 
    } 
    else { 
        $('regex_1_result').set('html', "didn't match"); 
    } 
}


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

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

忽略大小写

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

参考代码: 



// 我们要在这个字符串中查找 
var string_to_test = "IgNorE CaSe"; 

// 返回false 
string_to_test.test("ignore"); 

// 返回true 
string_to_test.test("ignore", "i");

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

参考代码: 

var regex_demo = function(){ 
    // 从输入文本框中得到要测试的字符串 
    var test_string = $('regex_2_value').get('value'); 

    // 从输入文本框中得到正则表达式 
    var regex_value = $('regex_2_match').get('value'); 

    // 如果我们需要忽略大小写 
    var regex_param = ""; 
    if ($('regex_2_param').checked){ 
        regex_param = "i"; 
    } 

    // 运行test()方法并得到结果 
    var test_result = test_string.test(regex_value, regex_param); 

    // 更新结果显示区域 
    if (test_result){ 
        $('regex_2_result').set('html', "matched"); 
    } 
    else { 
        $('regex_2_result').set('html', "didn't match"); 
    } 
}


有趣的事情

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

使用^从字符串开始匹配

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

参考代码: 

// 我们要测试的字符串 
var string_to_test = "lets match at the beginning" 

// 测试这个字符串是不是以lets开头,返回true 
var is_true = string_to_test.match("^lets"); 
和你期待的一样,如果这个表达式不是在字符串的开头,这个测试将返回false: 
// 我们要测试的字符串 
var string_to_test = "lets match at the beginning"; 

// 测试这个字符串是不是以match开头,返回false 
var is_false = string_to_test.match("^match");


使用$匹配字符串的结尾

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


  • 它匹配一个字符串的结尾而不是开头


  • 它放在正则表达式的结尾而不是开头


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

参考代码: 

// 我们要测试的字符串 
var string_to_test = "lets match at the end"; 

// 测试这个字符串是不是以end结尾,返回true 
var is_true = string_to_test.match("end$"); 

// 测试这个字符串是不是以the结尾,返回false 
var is_false = string_to_test.match("the$");


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

参考代码: 


// 我们要测试的字符串 
var string_to_test = "lets match everything"; 

// 测试这个字符串是不是完全和"lets match everything"一样,返回true 
var is_true = string_to_test.match("^lets match everything$"); 

// 测试这个字符串是不是完全和"lets everything"一样,返回false 
var is_false = string_to_test.match("^lets everything$");

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com