首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

正則表達式在 Perl、PHP、JavaScript 中的應用詳解

     編輯:PHP 綜合知識

概述

掌握正則表達式語法後,關鍵在於如何在不同語言環境中正確調用。本文對比演示 Perl、PHP、JavaScript 三大主流腳本語言的正則操作差異,以郵箱驗證為統一示例。

Perl 正則操作

基本語法

operator / regular-expression / string-to-replace / modifiers
  • m:匹配操作
  • s:替換操作
  • 修飾符:g 全局替換、i 忽略大小寫

範例

# 替換首個 geed 為 good
s/geed/good/

# 全局替換 love 為 lust
s/love/lust/g

# 忽略大小寫匹配 JewEL
m/JewEL/i

# 指定匹配對象變量
$flag =~ s/abc/ABC/

完整郵箱驗證腳本

#!/usr/bin/perl
print "What's your email address? ";
$email = <>;
chomp($email);

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() 函數(PHP 5.3 棄用,建議改用 preg_match())

int ereg(string $pattern, string $string)

郵箱驗證示例

<?php
$email = 'test@example.com';
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 正則操作

RegExp 物件與 test() 方法

JavaScript 1.2+ 內建 RegExp 物件,test() 返回布林值表示是否匹配。

表單驗證完整頁面

<html>
<head>
<script language="JavaScript1.2">
<!--
function verifyAddress(obj) {
    var email = obj.email.value;
    var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
    var flag = pattern.test(email);
    if (flag) {
        alert("Your email address is correct!");
        return true;
    } else {
        alert("Please try again!");
        return false;
    }
}
// -->
</script>
</head>
<body>
<form onSubmit="return verifyAddress(this);">
<input name="email" type="text">
<input type="submit" value="提交">
</form>
</body>
</html>

三語言核心差異對比

特性PerlPHP (ereg)JavaScript
操作符/函數=~ / m// s///ereg() / eregi()RegExp.test() / String.match()
修飾符位置結尾 /g /i函數參數或 eregi() 忽略大小寫/pattern/gi 字面量
分組捕獲$1 $2...ereg() 第三參數陣列RegExp.$1 或 exec() 返回陣列
效能特點編譯優化強POSIX 正則較慢引擎優化極佳

現代最佳實踐建議

  • PHP:棄用 ereg 系列,全面採用 PCRE 函數 preg_match()、preg_replace() 等
  • JavaScript:優先使用字面量 /pattern/flags 建立 RegExp,避免字串構造器性能損耗
  • 跨語言:郵箱驗證正則建議採用 RFC 5322 相容模式,或直接使用語言內建驗證器(如 PHP filter_var($email, FILTER_VALIDATE_EMAIL))
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved