正则表达式检查字符串格式?

时间:2014-10-14 04:23:03

标签: java regex

我需要一个正则表达式来匹配一个格式如下的字符串:

2014-08-06T21:02:16Z,-33.7939310,151.0553090,-0.8

我是否必须为每个数字使用//d?负数怎么样?

2 个答案:

答案 0 :(得分:1)

这个怎么样:

/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z,-?\d{2,3}\.\d{7},-?\d{2,3}\.\d{7},-?\d{1,2}\.\d/

例如,\ d {4}表示“4位数”, - *表示“0或更多短划线”,因此应匹配正数或负数。

通过使用这样的可能字符组,您也可以更通用:

/[0-9-]{10}[0-9TZ:]{10},[0-9-.,]{26,28}/

即,10个字符的任何数字或短划线,数字或字母T或Z或10个字符的冒号,然后是逗号,以及26-28个字符的数字,短划线,句号或逗号。这不像上面的正则表达式那么严格,但根据您的要求可能就足够了。

以上适用于javascript和perl,这里是R版本(双重转义):

s <- "2014-08-06T21:02:16Z,-33.7939310,151.0553090,-0.8"
grep("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z,-?\\d{2,3}\\.\\d{7},-?\\d{2,3}\\.\\d{7},-?\\d{1,2}\\.\\d", s)

答案 1 :(得分:0)

^\d{4}-\d{1,2}-\d{1,2}T\d{2}:\d{2}:\d{2}Z,-?\d*\.?\d*,\d*\.\d*,-?\d*\.\d*$

试试这个。参见demo.Set标志m

http://regex101.com/r/uH3tP3/7