【发布时间】:2016-10-22 16:51:12
【问题描述】:
我正在尝试为我的项目学习正则表达式,以便将其用于输入验证,因为有人告诉我,使用正则表达式是进行输入验证的最佳方法之一。
所以,我试图确保一个字符串包含未知数量的坐标,这些坐标由空格分隔。输入的示例是2,2 23.45,6 45,21.65 2,2 我不确定它是否重要,但最后一个坐标将始终与第一个坐标匹配。不能有任何符号或多余的空格或逗号。只有十进制数字用逗号分隔,后跟空格或结束符。
我意识到这可能是一个相当复杂的表达式,而且我几乎是盲目地跳入正则表达式,所以对此的任何帮助将不胜感激。如果这改变了任何东西,我正在用 C++ 编程。谢谢。
编辑:
我忘记了负数和换行符的可能性。我也接受输入中的负数和换行符。
所以输入-2.3,2 34,-2 -2.3,2\n 是可以接受的。到目前为止,感谢大家的帮助。
【问题讨论】:
-
似乎您可以使用空格和逗号分隔数字。
-
@TimBiegeleisen 它们在技术上是有序的。所以我需要两个用逗号分隔的数字。然后如果有超过 1 个有序对,则用空格分隔。
-
负数,指数符号呢?您几乎必须自己编写表达式来描述语法是什么。是“+4.3,-。”一个有效的组件?
-
@JohnGriffin 抱歉,负数也可以接受。我忘记了。
标签: c++ regex validation input