簡體   English   中英

php preg_match模式

[英]Php preg_match pattern

我有一個表單字段,我想檢查用戶是否提交了正確的模式。 我嘗試過這種方式。

// $car_plate should in XXX-1111, or XXX-111(three letters in uppercase followed by a dash and four or three numbers)
<?php
    $car_plate = $values['car_plate'];
    if (!preg_match('[A-Z]{3}-[0-9]{3|4}$', $car_plate)) {
        $this->errors ="Pattern for plate number is XXX-1111 or XXX-111";
    } else {
        // code to submit
    }
?>

以下車牌號格式正確(AAA-456,AGC-4567,WER-123)。 在這種情況下,它總是返回錯誤。 正確的方法是什么?

替代TimoSta的答案。

/^[a-zA-Z]{3}-?\\d{3,4}$/

這允許用戶以小寫字母輸入字母並跳過破折號

您可以稍后像這樣格式化數據:

$input = 'abc1234';
if ( preg_match( '/^([a-zA-Z]{3})-?(\d{3,4})$/', $input, $matches ) )
{
    $new_input = strtoupper( $matches[1] ) . '-' . $matches[2];
    echo $new_input;
}

輸出:ABC-1234

看起來您對正則表達式有點不滿意。

試試這個:

/^[A-Z]{3}-[0-9]{3,4}$/

在PHP中,您必須使用定界符 (在這種情況下為斜杠)將正則表達式括起來。 除此之外, {3|4}是無效的,正確的語法是{3,4}你可以在覆蓋文檔看到重復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM