使用preg_match验证字符串格式

时间:2014-05-22 16:25:56

标签: php regex

我有一个html表单,其中包含一个销售订单号的输入,其格式应为K1234 / 5678。它应始终以字母K开头,然后是4个数字,a /后跟另一组4个数字。

我尝试使用preg_match验证格式,并且我在preg_match的语法中迷路了。从http://php.net/manual/en/function.preg-match.php我已经接近了。使用以下代码,我能够验证它包含至少1个字母,一些数字和至少1个非字母数字值。

$so= $_POST['so'];
if (preg_match(""/^(?=.*[a-z]{1})(?=.*[0-9]{4})(?=.*[^a-z0-9]{1})/i", $so))
{
    print $so;
}

用于此的正确语法是什么? preg_match甚至是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

preg_match("#^K[0-9]{4}/[0-9]{4}$#i", $so)

说明:

#个字符是正则表达式分隔符 - 它们表示模式的开始/结束。 ^$表示字符串的开头和结尾 - 这意味着只有在您的销售订单编号是字符串中唯一的内容时才会匹配。字母K表示匹配该字母,[0-9]{4}表示正好匹配数字4次。最后的i表示不区分大小写的匹配 - K将匹配" K"或" k"。

在开发正则表达式时,我经常使用正则表达式测试器 - 这些允许您输入数据并尝试一些不同的东西来优化正则表达式。 Google PHP regex tester查找工具列表。此外,还有一个非常完整的http://www.regular-expressions.info/正则表达式引用。