【问题标题】:Regex expression - PCI and Office 365 - Specific Expression Needed正则表达式 - PCI 和 Office 365 - 需要特定表达式
【发布时间】:2021-11-03 16:49:01
【问题描述】:

感谢您在高级方面的帮助。我一直在尝试弄清楚这一点并进行一些测试....我是正则表达式的新手....

Office 365 正在将信用卡号码模式与礼品卡匹配。礼品卡不匹配任何银行或公司模式,虽然是 16 位数字,但它们不能被 70 整除和 =1 的 LUH 测试相加。

请求 1: 出于测试目的,我想允许特定的礼品卡号(9050991566549878 或 9050-9915-6654-9878)通过过滤器。这样我就可以使用特定的礼品卡号进行测试。在 Office 365 中,我会说“除非主题或正文匹配模式:在此处输入正则表达式”

请求 2: 我想对我的 DLP 规则进行修改,以允许以数字 9040(或任何其他四位代码开头且长度为 16 位,不包括 - 之间的 - 如果用户输入它们))。当我看到其他所有组合时,我一直在努力写这个。在 Office 365 中,我会说“除非主题或正文匹配模式:在此处输入正则表达式”

谢谢!

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: regex office365 pci


【解决方案1】:

通常,我会使用像(\d{4}-?){4} 这样的正则表达式来捕获四个数字,然后是一个可选的连字符重复四次。但是,懒惰的谷歌搜索让我相信 Office 365 实现了一种更简单的正则表达式形式,其中不包含其中一些字符。我认为应该为您工作的上述正则表达式的 Office 365 友好版本是:

\d\d\d\d(-|)\d\d\d\d(-|)\d\d\d\d(-|)\d\d\d\d

这相当于一种非常冗长的说法:“给我 4 个数字,也许是一个连字符,再给 4 个数字,也许是一个连字符,再给 4 个数字,也许是一个连字符,再给 4 个数字。

【讨论】:

  • 谢谢,Ian - 您认为我们如何为特定数字添加它?或者可能是一个表示我们忽略任何以 1 或 2 开头并且是 16 位格式的表达式?也许有两种表达方式?一个带连字符,一个不带?
  • 当然。如果您想使用特定号码,只需将 \d 字符替换为您要匹配的号码即可。 \d 只是意味着匹配任何数字。因此,要匹配以1234 开头的数字,例如,我们将使用1234(-|)\d\d\d\d(-|)\d\d\d\d(-|)\d\d\d\d,也就是说,1234,可能后跟一个连字符,然后再跟四个数字,另一个可选连字符,另外四个数字,另一个可选的连字符和最后一组四位数字。
  • 如果我们不想要连字符模式呢?再次感谢!你帮了很多忙。
  • 您可以删除(-|) 的每个实例。这将引导您使用匹配 16 位数字的正则表达式(\d 16 次)。我实际上不必处理 Office 365,因此他们的正则表达式实施可能比我想象的要广泛。我从 2014 年在 Spiceworks 论坛上找到了这个 blog entry(这是另一个获得此类建议的好地方)。这可能是您开始的好地方。那和online regex playground 可能会带你去你需要的地方。
猜你喜欢
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多