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

标签 java regex

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

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

我必须对每个数字使用 //d 吗?负数呢?

最佳答案

这个怎么样:

/\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)

关于java - 正则表达式检查字符串格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26352610/

相关文章:

java - 无法从泛型方法返回对象

java - 不接受数组中相同的输入

javascript - 正则表达式测试,但仅当 11 个字符时

java - 使用split()时悬挂元字符

regex - 让 nginx 替换 css 样式表

java - 使用 ObjectInputStream 时,在对象反序列化期间是否会调用默认构造函数?

java - 如何处理不是真正枚举的枚举,因为它们可以更改?

java - 用于读取 .txt 的多线程 BufferedReader

c# - 恰好 N 个元素的正则表达式,不多不少

java - 从java中的多行文本中提取键值对