我的输入数字是一个整数。但是输入的数字必须在-2055到2055的范围内,我想使用正则表达式进行检查。
那么有没有什么办法写一个正则表达式来检查一个数字是否在(-2055,2055)中呢?
更容易使用if语句来检查数字是否在范围内。但是我正在编写一个解释器,所以我应该使用regex来检查输入数字
发布于 2014-04-30 17:37:34
这么多答案,但是没有人在评论中读到(或关心) OPs方面的问题?
我正在用OCaml写一个解释器....如何在不使用正则表达式的情况下验证范围内的输入数字??- Trung Nguyen Mar 2 at 17:30
正如许多答案正确地指出,在这种情况下使用正则表达式是可怕的,让我们考虑一下OCaml中的其他方法!自从我使用OCaml以来已经有一段时间了,但是通过查找一些构造,我能够将这些拼凑在一起:
let isInRange i =
not(i < -2055 or i > 2055);;
let isIntAndInRange s =
try
let i = int_of_string s in
not(i < -2055 or i > 2055)
with Failure "int_of_string" -> false;;
let () = print_string "type a number: " in
let s = read_line () in
isIntAndInRange s如果有任何不清楚的地方,请仔细阅读它的语法、type conversion functions、exception handling和input-output functions。
用户输入部分仅用于演示。在那里使用read_int函数可能更方便。但处理异常的基本概念保持不变。
https://stackoverflow.com/questions/22130429
复制相似问题