-5

我需要验证以下格式的字符串:

数字、字母和 _
最小长度 4 和最大长度 15
至少 1 个字母 [az]

例如:

有效的:

  • A B C D
  • ABCDE
  • ABC_
  • 01A_
  • A12345_BCDW1234

无效:

  • 美国广播公司
  • 01A
  • A12345_BCDW123411
  • _1212392034
  • _
  • A_1

我做了几次尝试,但没有成功。

4

1 回答 1

1

我不认为你可以在一个正则表达式中做到这一点,长度 {4,15} 和“必须包含一个字母”的约束的验证必须独立完成。

$test_inputs = array(
      'ABCD', 'ABCDE', 'ABC_', '01A_', 'A12345_BCDW1234'
    , 'ABC', '01A', 'A12345_BCDW123411', '_1212392034', '_', 'A_1'
);

$res = array();
foreach($test_inputs as $input)
{
    $res[$input] = (preg_match('/^[A-Z0-9_]{4,15}$/i', $input) && preg_match('/[A-Z]/i', $input));
}

var_dump($res);
于 2013-02-17T01:45:04.357 回答