正则表达式 - 匹配字符串中的字符

时间:2013-11-06 14:19:09

标签: php regex preg-match

所以,我正在寻找一种使用PHP preg_match()函数验证字符串的方法。

第一个字符必须是字母,且必须是JRP。 第二个字必须是一个字母。 字符3-8必须是数字。

任何人都有关于如何实现这一目标的指导?拜托,谢谢你。

4 个答案:

答案 0 :(得分:4)

您在寻找/^[JRP][A-Z][0-9]{6}$/吗?

<强>尸检:

  • ^ - 字符串必须从这里开始
  • [JRP] - 字符“J”,“R”或“P”
  • 中的任何一个
  • [A-Z] - 来自A-Z(大写)的字母
  • [0-9][6} - 从0到9的数字恰好匹配6次(所以你总共得到8个字符)
  • $ - 字符串必须在这里结束

在PHP中使用:

if (preg_match('/^[JRP][A-Z][0-9]{6}$/', $string)) {
    echo "Matches!";
}

如果您想搜索文字,可以跳过^$

if (preg_match_all('/[JRP][A-Z][0-9]{6}/', $string)) {
    echo "Matches!";
}

如果您希望它与小写字母相匹配,您只需将a-z添加到[A-Z]匹配即可:[a-zA-Z]

答案 1 :(得分:1)

这应该只是做工作

/^[JRP][A-Za-z]\d{6}$/

答案 2 :(得分:0)

$string = 'JJ123456';

if (preg_match('/^J|R|P[a-zA-Z][0-9]{6}$/', $string))
{
    // Matched
}
else
{
    // Does not match
}

答案 3 :(得分:0)

$val = "JA1234";
var_dump(preg_match("/^[JRP][a-zA-Z][0-9]{6}$/", $val));

其中:

^ - place of a start of string
$ - place of the end of string
so whole string should be matched with reqular expression
[JRP] - one of the letter from the list
[a-zA-Z] - one letter
[0-9]{6} - digit should be repeated 6 times