正则表达式

一旦您还不领会怎么利用正则表明式(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。(Fdream注:经taoyu3781212的晋升,这几个说法是不科学的。实际上,contains()方法可以钦命多少个参数,第3个参数是要探索的字符串,第一个是分隔字符串,独有当钦命第四个参数时,contains()方法才会回来false,那一个实在正是array的contains()方法。)
参照代码:

复制代码 代码如下:

var string_to_match = "anything else";
// 返回true
string_to_match.contains('nything')
// 返回false
string_to_match.contains('nything', ' ')
// 返回true
string_to_match.contains('anything')
// 返回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$");

要测量检验的字符串:
正则表明式
忽略大小写
字符集
字符集是其他多个正则表明式工具,能够允许你合作三个特定的字符(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")
// 那还要相称第三个和第1个字符串
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包

Regular-Expressions.info是三个很好的参谋和上学的地点——二个值得花一些日子浏览的网址。对于那么些纯熟Perl恐怕通晓各个语言差别的人,Robert的Perl教程中的关叶昭君则表达式这一节则对一些基本概念解释得那么些的好。同样,斯蒂芬Ramsay已经写了贰个有关Unix正则表明式的教程,用一种十分理解和直接了当的法子疏解了里面包车型客车局地概念。

其它三个科学的地点是正则表明式库,它们有不知凡几的正则表达式例子来产生美妙绝伦的大范围任务。最后,假设您有胆量,你应当花一些岁月来看一下Mozilla的JavaScript正则表达式参照他事他说加以考察手册。那或者相当的多,可是最佳有用。借使您想看一下MooTools那边境海关刘和平则的源委,能够看一下test()函数的文书档案。

本文由华夏彩票发布于计算机网络,转载请注明出处:正则表达式

您可能还会对下面的文章感兴趣: