在Js或php中使用空格格式的验证表单

时间:2014-05-28 10:49:01

标签: javascript php

如何进行表格验证,如下列格式:

=> 19740315 200901 2 001 
=> 19740315(space)200901(space)2(space)001

只允许用户输入上述格式。 如果没有空格或不遵循格式的用户输入将显示警告。

4 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:^[0-9]{8}[ ]{1}[0-9]{6}[ ]{1}[0-9]{1}[ ]{1}[0-9]{3}$ 如果用户输入不匹配,则显示警报。

答案 1 :(得分:0)

将preg_match与此正则表达式[0-9]{8}\ [0-9]{6}\ [0-9]\ [0-9]{3}

一起使用
$str = '19740315 200901 2 001 ';

if(preg_match('#[0-9]{8}\ [0-9]{6}\ [0-9]\ [0-9]{3}#', $str))
{
   echo 'ok';
}
else
{
   echo 'wrong';
}  
  • [0-9] - 表示0-9范围内的数字
  • {8} - 意味着它必须是来自班级的8个字符,之前是0-9
  • \ - 是一个空格

答案 2 :(得分:0)

在php中:

$a = explode(" ", "19740315 200901 2 001");
if(count($a) == 4){
 //it had 4 number blocks separated with a space
 if(strlen($a[0]) == 8){
  //first number block had 8 digits
 }else{ //first number block doesn't meet it's required length
  return false;
 }
 if(strlen($a[1]) == 6){
  //second number block had 6 digits
 }else{
  //second number block fails it's required length
  return false;
 }
 if(strlen($a[2]) == 1){
  //3rd number block had 1 digit
 }else{
 //falis for length
 return false;
 }
 if(strlen($a[3]) == 3){
  //4th number block had 3 digits
 }else{
  //fails at length
 }
}else{ 
 // it doesn't have 4 number blocks
}

同样的方法可以用jQuery编写。 只需使用.split() for explode()

答案 3 :(得分:0)

PHP中的变体。由于您没有提供有关此类零件类型的信息,我猜测它们是这样的:

  • 日期(YYYMMDD)
  • 数字(六位数)
  • 数字(一位数)
  • 数字(三位数)

如果日期已过,也可以确认!

验证此功能的功能可能如此:

<?php
function validateMyData($data) {
    //is data here
    if ($data === null || strlen($data !== 21) return false;
    //split into parts and check
    $parts = explode(' ', $data);
    if (count($parts) !== 4) return false;

    //check first part (also validate if it is a valid date)
    if (preg_match('/[0-9]{8,8}/', $parts[0]) < 1) return false;
    $date = @mktime(0, 0, 0, substr($parts[0],4,2), substr($parts[0],6,2), substr($parts[0],0,4));
    if (!$date || $date === -1) return false;

    //check second part
    if (preg_match('/[0-9]{6,6}/', $parts[1]) < 1) return false;

    //check third part
    if (preg_match('/[0-9]{1,1}/', $parts[2]) < 1) return false;

    //check fourth part
    if (preg_match('/[0-9]{3,3}/', $parts[3]) < 1) return false;

    //everything ok!
    return true;
}

我独立检查了部件,根据部件的内容向您显示可以进一步检查的位置。否则,可以使用单个正则表达式和第一部分的单独日期检查轻松完成。