我的数据库使用PHP uniqid函数创建新条目。这意味着ID为13个字符,混合了数字和字母。
ID的例子:
当收到电子邮件时,它是为了检查主题是否为#后跟ID - 示例主题:“Re:[Item#5a0ae6fa29476] Need Info”。它必须包含#。
我想使用preg_match / regex从电子邮件中提取ID。
我目前正在使用:
/(?!#)\w{13}/
但问题是#并不重要,电子邮件主题中的以下字符串仍将被处理:
有人建议使用更好的正则表达式吗?提前致谢
答案 0 :(得分:1)
您需要在13位数之前匹配 #
符号,但您也可以使用\K
运算符轻松将其丢弃:
/#\K\w{13}\b/
<强>详情
#
- #
符号\K
- 匹配重置运算符,丢弃目前为止匹配的所有文本\w{13}
- 13个单词字符以\b
- 字边界请参阅regex demo。