正则表达式使用详解（二）

使用实例
在对正则表达式有了较为全面的了解之后，我们就来看一下如何在 Perl，PHP，以及 JavaScript 中使用正则表达式。
通常，Perl 中正则表达式的使用格式如下：
operator / regular-expression / string-to-replace / modifiers
运算符一项可以是 m 或 s，分别代表匹配运算和替换运算。
其中，正则表达式一项是将要进行匹配或替换操作的模式，可以由任意字符，元字符，或定位符等组成。替换字符串一项是使用 s 运算符时，对查找到的模式匹配对象进行替换的字符串。最后的参数项用来控制不同的匹配或替换方式。例如：
s/geed/good/
将会在目标对象中查找第一个出现的 geed 字串，并将其替换为 good。如果我们希望在目标对象的全局范围内执行多次查找—替换操作的话，可以使用参数 “g”，即 s/love/lust/g。
此外，如果我们不需要限制匹配的大小写形式的话，可以使用参数 “i ”。例如，
m/JewEL/i
上述正则表达式将会与目标对象中的 jewel，Jewel，或 JEWEL 相匹配。
在 Perl 中，使用专门的运算符“=~”指定正则表达式的匹配对象。例如：
$flag =~ s/abc/ABC/
上述正则表达式将会把变量$flag 中的字串 abc 替换为 ABC。
下面，我们就在 Perl 程序中加入正则表达式，验证用户邮件地址格式的有效性。代码如下：
#!/usr/bin/perl
# get input
print “What's your email address?\n”;
$email = <>
chomp($email);
# match and display result
if($email =~ /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/)
{
print(“Your email address is correct!\n”);
}
else
{
print(“Please try again!\n”);
}
如果用户更偏爱 PHP 的话，可以使用 ereg()函数进行模式匹配操作。ereg()函数的使用格式如下：
ereg(pattern, string)
其中，pattern 代表正则表达式的模式，而 string 则是执行查找替换操作的目标对象。同样是验证邮件地址，使用 PHP 编写的程序代码如下：
<?php
if (ereg(“^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+”,$email))
{ echo “Your email address is correct!”;}
else
{ echo “Please try again!”;}
?>
最后，我们在来看一下 JavaScript。JavaScript 1.2 中带有一个功能强大的 RegExp()对象，可以用来进行正则表达式的匹配操作。其中的 test()方法可以检验目标对象中是否包含匹配模式，并相应的返回 true 或 false。
我们可以使用 JavaScript 编写以下脚本，验证用户输入的邮件地址的有效性。
<>
<>
< language="Javascript1.2">
<!-- start hiding
function verifyAddress(obj)
{
var email = obj.email.value;
var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
flag = pattern.test(email);
if(flag)
{
alert(“Your email address is correct!”);
return true;
}
else
{
alert(“Please try again!”);
return false;
}
}
// stop hiding -->
</script>
</head>
<>
< onSubmit="return verifyAddress(this);">
< name="email" type="text">
< type="submit">
</form>
</body>
</html>