首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ruby/rails检测金融跟踪数据并返回零/空字符串

ruby/rails检测金融跟踪数据并返回零/空字符串
EN

Stack Overflow用户
提问于 2015-09-02 13:54:57
回答 1查看 194关注 0票数 0

我阅读了类似的堆叠溢出问题,以了解金融跟踪卡数据。

我认为我所面临的问题可能略有不同,或者我在regex方面真的很薄弱。

现在,我们有了一个服务,它意外地返回跟踪数据,而不是客户名称。

我的目标是每次收到跟踪数据时显示"“空字符串,否则返回来宾名称。(这是一个临时解决方案,直到我们修复根本原因)。

这就是我的正则表达式,但它似乎没有检测到跟踪数据。

代码语言:javascript
运行
复制
irb(main):043:0> guestname="%4234242xx12^TEST/GUEST L      ^324532635645744646462"

irb(main):044:0> (/[(%[bB])(;)]\d{3,}.{9,}[(^.+^)(=)].+\?.{,2}/.match(guestname)) ? "" : guestname
=> "%4234242xx12^TEST/GUEST L      ^324532635645744646462"

(非真实数据)

现在,在wiki上查找我想要涵盖的大多数情况(如果不是全部)的跟踪数据信息:

卡片

可以帮我的忙。这就是我所拥有的:

/[(%[bB])(;)]\d{3,}.{9,}[(^.+^)(=)].+\?.{,2}/

轨道1,格式B: 启动哨兵-一个字符(一般为'%') 格式code="B" -一个字符(仅阿尔法) 主帐号(PAN) -最多19个字符.通常,但不总是,匹配信用卡号码打印在卡的正面。 字段分隔符-一个字符(一般为'^') 名称-2到26个字符 字段分隔符-一个字符(一般为'^') Expiration date -格式为YYMM的四个字符。 服务代码-三个字符 自由裁量数据-可以包括Pin验证密钥指示器(PVKI,1字符)、PIN验证值(PVV,4个字符)、卡验证值或卡验证代码(CVV或CVC,3个字符)。 结束哨兵-一个字符(一般是'?') 纵向冗余校验()--它是从轨道上的其他数据中计算出来的一个字符和一个有效性字符。 曲目2:这种格式是由银行业开发的。此跟踪是用5位方案编写的(4个数据位+1个奇偶),允许16个可能的字符,即数字0-9,加上6个字符:;<=>?选择6个标点符号似乎有些奇怪,但实际上,这16个代码只是映射到ASCII范围0x30到0x3f,它定义了十个数字字符加上这六个符号。数据格式如下: 开始哨兵-一个字符(一般是';') 主帐号(PAN) -最多19个字符.通常,但不总是,匹配信用卡号码打印在卡的正面。 分离器-一个字符(一般为'=') Expiration date -格式为YYMM的四个字符。 服务代码-三位数。第一个数字指定交换规则,第二个数字指定授权处理,第三个数字指定服务范围。 自由裁量数据--如第一轨道中的 结束哨兵-一个字符(一般是'?') 纵向冗余校验()--它是从轨道上的其他数据中计算出来的一个字符和一个有效性字符。大多数读取器设备在刷卡到表示层时不返回此值,并且只使用它在内部验证读取器的输入。

EN

回答 1

Stack Overflow用户

发布于 2015-09-02 14:05:38

  1. 示例输入字符串不包含第一个哨兵之后的格式代码。
  2. 您正在尝试解析html编码的版本,这是很奇怪的。

所以,我从html解码开始。例如用诺科吉里

代码语言:javascript
运行
复制
▶ guestname="&#x0025;4234242xx12&#x005E;TEST&#x002F;GUEST L      &#x005E;324532635645744646462"
#⇒ "&#x0025;4234242xx12&#x005E;TEST&#x002F;GUEST L      &#x005E;324532635645744646462"
▶ parsed = Nokogiri::HTML.parse(guestname).text
#⇒ "%4234242xx12^TEST/GUEST L      ^324532635645744646462"

好吧,现在我们至少有一个领先的百分比。现在让我们扪心自问:有多少用户有一个以百分比符号开头的来宾名称?我打赌一点也不。您可以通过对数据库运行查询来重新检查自己。由于这是一个暂时的解决办法,我肯定会关闭完美主义,转而:

代码语言:javascript
运行
复制
▶ parsed =~ /\A%/ ? '' : parsed

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32355160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档