需要正則表達式的幫助。php正則表達式
我有一個html表單來接受牌照,生日和社會保險號碼的輸入。我有一個php腳本,使用preg_match()
函數在輸入中讀取。我似乎不能得到這些3 preg_match
功能與下面發佈的例子。
車牌:格式LLLDDD
或DDDLLL
(L
=字母; D
=數字),有可能是零或字母和數字之間的一個空間。
所有這些都是有效的:
- ABC123
- 123ABC
- ABC 123
- 123 ABC
生日:格式MMMDDYYYY
,MMM
三個字母; DD
和YYYY
是數字。
所有這些都是有效的:
- JAN-01-2002
- MAY-30-1933
社會保險號碼:9位;每個組的三個
後可以有零個或多個空格所有這些都是有效的:
111 222 333
111 22233
PHP腳本:lab11.php
<?php
// Get license plate, birthday and
// social insurance number entered from lab11.html form
$licensePlate = $_POST['licensePlate'];
$birthday = $_POST['birthday'];
$socialInsuranceNumber = $_POST['socialInsuranceNumber'];
echo "<br>";
// Validate regular expression for license plate entered
if (preg_match("/^(\([\d]{3}\)|[\d]{3})?(-|\s*)?([\d]{3})?(-|\s*)?[\d]{3}(-|\s*)?[\d]{4}$/", $licensePlate))
{
echo "The license plate you entered is " . $licensePlate . ".";
}
else
{
echo "The license plate you entered is incorrect.";
}
echo "<br>";
// Validate regular expression for birthday entered
if (preg_match("/^(\([\d]{3}\)|[\d]{3})?(-|\s*)?([\d]{3})?(-|\s*)?[\d]{3}(-|\s*)?[\d]{4}$/", $birthday))
{
echo "Your birthday is " . $birthday . ".";
}
else
{
echo "Your birthday is incorrect.";
}
echo "<br>";
// Validate regular expression for social insurance number entered
if (preg_match("/^(\([\d]{3}\)|[\d]{3})?(-|\s*)?([\d]{3})?(-|\s*)?[\d]{3}(-|\s*)?[\d]{3}$/", $socialInsuranceNumber))
{
echo "The social insurance number you entered was " . $socialInsuranceNumber . ".";
}
else
{
echo "The social insurance number you entered is incorrect.";
}
?>
爲什麼要使用所有這三個輸入相同的正則表達式?你寫了那個正則表達式嗎?在你的輸入中似乎並不需要'()'。這是牌照,'^([AZ] \ s?){3}(\ d \ s?){3} |( \ d \ S'){3}([AZ] \ S'){3} $'。元字符不需要在字符類中,'\ d'是一個數字,而不是字母。 – chris85
我想生日會像他一樣:'^(JAN | FEV | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC) - \ d {2} - \ d {4} $' –
我需要幫助的最後一件事是如何在社會保險號碼的每個3位數字分組之間顯示超過1個空格。例如,如果您輸入:「111 333222」,我希望它以類似的方式顯示,它將顯示如下:「111 333222」 – user7123308