忽略大小写
在很多情况下,你不需要关心你要匹配的项的大小写。如果你不想要一个正则表达式对大小写敏感,你可以在调用test()方法时添加一个参数i:
参考代码: 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这边关于正则的内容,可以看一下。