2017-10-09 45 views
-5

這個正則表達式變量不符合我的preg_match功能工作:如何解決此正則表達式錯誤?

形式

<div class="row"> 
     <div class="col-md-6"> 
     <label for="f_name">First Name</label> 
     <input type="text" class="form-control" id="f_name" name="f_name" > 
     </div> 
     <div class="col-md-6"> 
     <label for="l_name">Last Name</label> 
     <input type="text" class="form-control" id="l_name" name="l_name" > 
     </div> 
    </div><br> 

    <div class="row"> 
     <div class="col-md-12 text-right"> 
      <button id="signup_button" name="signup_button" class="btn btn-success" style="font-family: Roboto;font-size: 15px;"> 
      Create Account 
      </button> 
     </div> 
    </div> 

這是JavaScript的

$("#signup_button").click(function (event) { 
    event.preventDefault(); 
    $.ajax({ 
     url  : "register.php", 
     method : "POST", 
     data : $("form").serialize(), 
     success : function(data){ 
      $("#signup_msg").html(data); 
     } 
    }) 

}) 

這是PHP文件..

$f_name = $_POST['f_name']; 
$name = "/^ [A-Z] [a-zA-Z ]+$/"; 

if (!preg_match($name,$f_name)) 
{ 
echo "$f_name is not valid"; 
exit(); 
} 

當我鍵入正確的名稱它說invali d下面的屏幕截圖 enter image description here

我輸入的文字說$f_name是無效的。我猜正則表達式不起作用。

回答

1

請記住,空格是正則表達式的有效部分 - 您無法使用空格來分隔正則表達式的某些部分(除非使用一些正則表達式修飾符..)。

在你的情況下,A a將是一個有效的輸入。要改變這種行爲,請從正則表達式中刪除空格。

$name = "/^[A-Z][a-zA-Z]+$/"; 
+0

它不會,如果工作你輸入'NAME Firstname' –

+0

@ThomasRollet我應該如何知道他的要求 - 他只是寫了正則表達式不起作用,而我的猜測是,由於空間原因,這不起作用。如果他想要'NAME Firstname',他可能會更好地使用'/^[AZ] + [AZ] [az] + $ /' – Philipp

+0

@ThomasRollet這樣的東西,即使在刪除空格之後它仍然不工作,它說無論我輸入什麼內容都無效 –

0

試試這個正則表達式:

/^[A-Z]+ [A-Z][a-z]+$/ 

在未來,你可以使用這種類型的網站來測試你的正則表達式:https://regex101.com/

希望它可以幫助你

+0

爲什麼OP要「嘗試這個正則表達式」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+0

它不工作太 –

+0

你有什麼類型來做到這一點? –