2017-10-09 106 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

你有什么类型来做到这一点? –