2017-02-20 66 views
1

凡eventString = {“时间戳”:1487204364889“UserEvent”:“烟花”}正则表达式上的整数不产生效果

eventString = JSON.stringify(event); 
Timestamp = eventString.match(/"Timestamp":^\d+$/)[1]; 
eventType = eventString.match(/"UserEvent":"([^"]+)"/)[1]; 

的EVENTTYPE是生产在一个字符串的形式的结果。 Timestamp是一个整数,不是。

+0

不应该是'Timestamp = eventString.match(/“Timestamp”:(\ d +)/)[1]'?您没有在模式中定义任何捕获组,但尝试访问结果数组中的[[1]]项。锚点似乎也是错位的。 –

+1

为什么要将对象串化以获取其属性。你不应该只使用'event.Timestamp'吗? –

+0

谢谢@WiktorStribiżew,这工作正常。请创建一个答案,以便我可以将其标记为已解决。 – Iorek

回答

1

您没有在模式中定义任何捕获组,但尝试访问生成数组中的[1]项目。锚点似乎也是错位的。

我建议删除锚点和周围设置了数字匹配模式的capturng括号:

Timestamp = eventString.match(/"Timestamp":(\d+)/)[1]; 

请注意,这是一个好主意,先匹配结果分配给一个变量,并检查它是否不为空,然后才能访问捕获的值以避免问题。

+1

但**为什么???他可以在'event'对象('event.Timestamp')中访问它们,对吗? –

+1

@ibrahimmahrir:**这不是问题。问题是关于为什么'String#match'使用的正则表达式没有返回任何匹配。这不是关于如何访问某个对象中的特定值。当然,如果有一些JSON对象,使用适当的方法等等更合适。 –

+1

请看他最后的[**评论**](http://stackoverflow.com/questions/42354020/regex-on-an -integer - 不生产,结果如何?noredirect = 1#comment71859097_42354020)! –