Regex / preg_match找到13个字符的唯一ID

时间:2017-12-08 13:41:11

标签: php regex preg-match

我的数据库使用PHP uniqid函数创建新条目。这意味着ID为13个字符,混合了数字和字母。

ID的例子:

  • 5a0ae6fa29476
  • 5a26822fbfd19
  • 5a2a952fc9558

当收到电子邮件时,它是为了检查主题是否为#后跟ID - 示例主题:“Re:[Item#5a0ae6fa29476] Need Info”。它必须包含#。

我想使用preg_match / regex从电子邮件中提取ID。

我目前正在使用:

/(?!#)\w{13}/

但问题是#并不重要,电子邮件主题中的以下字符串仍将被处理:

  • 5a0ae6fa29476
  • 13_characters
  • 通信
  • (包含字母,数字或下划线的任何13个字符串)

有人建议使用更好的正则表达式吗?提前致谢

1 个答案:

答案 0 :(得分:1)

您需要在13位数之前匹配 #符号,但您也可以使用\K运算符轻松将其丢弃:

/#\K\w{13}\b/

<强>详情

  • # - #符号
  • \K - 匹配重置运算符,丢弃目前为止匹配的所有文本
  • \w{13} - 13个单词字符以
  • 结尾
  • \b - 字边界

请参阅regex demo