解读邮箱正则表达式:^\w+([(3)

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 = <STDIN>   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编写以下脚本,验证用户输入的邮件地址的有效性。

<html>    <head>     <script 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>    <body>    <input type="text" onBlur="verifyAddress(this)">       </body>  </html>

一旦你有个包含了整个串的变量,你可以使用正则表达式,对整个文件进行操作,
而不是对文件中的某个块进行操作。有两个有用的正则表达式标记/s和/m。一般,Perl的 正则表达式对行进行处理,你可以这样写:

undef $/; $line = ; if ($line =~ /(b.*grass)$/) { print "found $1\n"; }

如果把我们的文件填入如下内容: browngrass
  bluegrass
  则输出为:
  found bluegrass
它没有找到“browngrass”,这是因为$ 仅在串尾寻找其匹配, (或者在串结束 前的一行)。如果在包含很多行的串中,用"^"
  和"$"来匹配,, 我们可以使用 /m ("multiline") 选项:
  if ($line =~ /(b.*grass)$/m) {}
  现在程序会把如下的信息输出:
  found browngrass
  类似地,句点可以匹配除了换行符之外的所有字符:

while () {
  if (/19(.*)$/) {
  if ($1 < 20) {
  $year = 2000+$1;
  } else {
  $year = 1900+$1;
  }
  }
  }

如果我们从文件中读入“1981”,$_ 将包含“1981\n”。正则表达式中的句点 匹配“8”和“1”, 而不匹配“\n”。这里正需要这样做,因为换行符不是日期的组成部分。对于一个包含很多行的串,我们也许要提取其中的大的块,这些块可能会跨越行分隔符。 在这种情况下,我们可以使用 /s 选项,并用句点来匹配除了换行符以外的所有字符。

if (m{(.*?)}s) {
  print "Found bold text: $1\n";
  }

此处,我用了{}来表示正则表达式的起始和结束,而不用斜杠,所以,我就可以 告诉 Perl我正在匹配,起始字符为"m",结束字符为"s"。你
可以把/s 和/m 选项组合使用:

if (m{^(.*?)}sm) {
  # ...
  }

总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyyfdw.html