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

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

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

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

字符集

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

参考代码: 

// 测试moo用的字符串 
var first_string_to_test = "cows go moo"; 

// 测试boo用的字符串 
var second_string_to_test = "ghosts go boo"; 

// 这匹配第一个字符串而不匹配第二个字符串 
var returns_true = first_string_to_test.test("moo"); 
var returns_false = second_string_to_test("moo"); 

// 这匹配第二个字符串而不匹配第一个字符串 
returns_false = first_string_to_test.test("boo"); 
returns_true = second_string_to_test.test("boo") 

// 这同时匹配第一个和第二个字符串 
returns_true = first_string_to_test("[mb]oo"); 
returns_true = second_string_to_test("[mb]oo");


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

参考代码: 


var string_to_test  = " b or 3"; 
// 匹配a, b, c, 或者d,返回true 
string_to_test.test("[a-d]"); 

// 匹配1, 2, 3, 4, 或者5. 返回 true. 
string_to_test.test("[1-5]");

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

参考代码: 

var string_to_test = "b or 3"; 
// 匹配a到d或者1到5,返回true 
string_to_test.test([ [a-d] | [1-5] ]);


escapeRegExp()方法

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

参考代码: 

// 我们要匹配的字符串,注意[、]、-和$ 
var string_to_match = "[stuff-in-here] or $300"; 

// 不正确的匹配方式 
string_to_match.test("[stuff-in-here]"); 
string_to_match.test("$300"); 

// 正确的匹配方式 
// 注意[、]、-和$前面的\ 
string_to_match.test("\[stuff\-in\-here\]"); 
string_to_match.test("\$300");


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

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

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

参考代码: 


// 我们要转义的字符串 
var unescaped_regex_string = "[stuff-in-here]"; 

// 转义这个字符串 
var escaped_regex_string = unescaped_regex_string.escapeRegExp(); 

// 转义后的字符串是 "\[stuff\-in\-here\]"

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

参考代码: 


// 需要转义的字符串 
var unescaped_regex_string = "[stuff-in-here]“; 
// 转义这个字符串,从开头匹配 
var escaped_regex_string = “^” + unescaped_regex_string.escapeRegExp(); 
// escaped_regex_string现在就是“^\[stuff\-in\-here\]”

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

参考代码: 

var regex_demo = function(){ 
    // 获取要测试的字符串 
    var test_string_1 = $('regex_7_value_1').get('value'); 

    // 获取要使用的正则表达式 
    var regex_value = $('regex_7_match').get('value'); 

    // 检查我们是不是要转义正则表达式 
    if ($('regex_7_escape').checked){ 
        // 如果是的,我们则进行转义 
        regex_value = regex_value.escapeRegExp(); 
    } 

    // 检查一下我们是不是要忽略大小写 
    var regex_param = ""; 
    if ($('regex_7_param').checked){ 
        regex_param = "i"; 
    } 

    // 运行测试 
    var test_result_1 = test_string_1.test(regex_value, regex_param); 
    if (test_result_1){ 
        $('regex_7_result_1').set('html', "matched"); 
    } 
    else { 
        $('regex_7_result_1').set('html', "didn't match"); 
    } 
}

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

更多学习

远程下载地址:下载一个包含你开始所需要的所有东西的zip包(27.41 KB)

asp之家下载地址:mootorial_day13_regexes.zip (27.41 KB)

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

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

0
投稿

猜你喜欢

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