2

我正在开发一个解析广告的 PHP 脚本,我想添加一个正则表达式来查找特殊代码,这些代码可以是任意长度,但由任意顺序或任意长度的字母和数字组成。我只是不确定正确的语法是什么。我发现允许字母或数字的模式,或者需要特定的字母和数字模式,但不是几乎随机的混合。

任何建议将不胜感激。

示例:在星期五之前使用优惠券代码 WID2010 购买 Widgets 20% 折扣

理想情况下,我想检测“WID010”这个词并用它来标记该项目以供其他用途。然而,这种格式不一定是一致的。所有可以预测的是代码总是由至少一个字母和一个数字组成,没有空格或标点符号。

4

2 回答 2

14

这样的代码确实包括

  • 任意数量的字母(最少 1 个)后跟一个数字和任意数量的字母和/或数字(最少 0 个)
  • 或任意数量的数字(最少 1 个)后跟一个字母和任意数量的字母和/或数字(最少 0 个)

写成捕获组:

((?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z])[a-zA-Z0-9]*)
于 2012-05-03T21:28:44.887 回答
7

就像是:

(?=\w*[a-z])(?=\w*[0-9])\w+

这会先查找一个字母,然后是一个数字,并将字母和数字(单词)与每个字母和数字(单词)至少匹配一个。

ideone

于 2012-05-03T21:31:34.977 回答