首页 > 解决方案 > 正则表达式,查找大写代码,但不包括以美元符号开头的数字

问题描述

我有看起来与此类似的字符串...

如果您想在店内购物,请使用此优惠券 ZXXZX123 在店内购物满 100 美元或以上可节省 20 美元,或 500 美元或以上可节省 100 美元。”

最后我想要的是ZXXZX123

我已经开始查找大写字母和数字,并且必须至少为 2 个字符。在那之后,我不确定如何不包括其他人。我想我的其他短语包括 20% 的折扣,所以我也不想包括这些类型的数字。

[A-Z0-9]{2,}

标签: regex

解决方案


您可以使用环视来确保匹配整个单词(空格之间的字符串):

(?<=\s|^)[A-Z0-9]{2,}(?=\s|$)

演示

解释:

  • (?<=\s|^)是正向向后看,它确保在匹配的下一个字符之前有一个空格,或者这是字符串的开头
  • (?<=\s|$)是正向前瞻,它确保在匹配的前一个字符之前有一个 after 这是字符串的结尾

推荐阅读