正则表达式接受数字 and/or 以逗号分隔的数字范围,但范围在 1-64 之间
Regex to accept numbers and/or number range separated by commas, but between range 1-64
我需要验证用户输入的字符串。
该字符串应允许数字或范围,以逗号分隔。数字必须在 1 到 64 之间。
Sample: 1,8,7-9,10-12,20-45
逗号或“-”前后允许有 space。
这看起来会很恶心。我不认为有一个简单的答案,因为正则表达式匹配字符串,而不是数字。事实证明,0 到 64 之间的数字看起来像这样
[1-6]?[0-9]
有些可能包含一个范围(但不是 space 或逗号)
[1-6]?[0-9](\-[1-6]?[0-9])?
编辑
这里我手动输入了 spaces 和逗号加上一个“?”紧随其后(出现一次或根本不出现),如果您允许多个 space,请更改相关的“?”到 "*" 我不能 100% 保证这会奏效,但逐步构建它,我相信它会奏效。
\([1-6]?[0-9]\( ?\- ?[1-6]?[0-9]\)? ?,? ?\)+
如果我做得更好,我会尝试更新。
编辑2
如果我在分组中正确写入,我的旧模式将匹配 0。让我们试试这个:
((([1-5]?[0-9])|(6[0-4])((\s?\-\s?([1-5]?[0-9])|(6[0-4]))?)(\s?,\s?)?)+
祝您编程愉快!如果您有任何问题,请发表评论。
给你,
^(?:6[0-4]|[1-5]\d|[1-9])(?: *- *(?:6[0-4]|[1-5]\d|[1-9]))?(?: *, *(?:6[0-4]|[1-5]\d|[1-9])(?: *- *(?:6[0-4]|[1-5]\d|[1-9]))?)*$
我使用 <space>*
而不是 \s*
因为 \s
也匹配换行符。如果您对换行符没有问题,请使用 \s
而不是 space。如果要允许可选的 space 不是零个或多个 space,请使用 \s?
而不是 <space>*
。
这应该匹配 1-64 之间的整数。
([1-9]|[1-5][0-9]|6[0-4])
这也应该接受范围。
([1-9]|[1-5][0-9]|6[0-4])(-([1-9]|[1-5][0-9]|6[0-4]))?
在一行中匹配一个或多个。
^(([1-9]|[1-5][0-9]|6[0-4])(-([1-9]|[1-5][0-9]|6[0-4]))?\s*($|,\s*))+$
我需要验证用户输入的字符串。 该字符串应允许数字或范围,以逗号分隔。数字必须在 1 到 64 之间。
Sample: 1,8,7-9,10-12,20-45
逗号或“-”前后允许有 space。
这看起来会很恶心。我不认为有一个简单的答案,因为正则表达式匹配字符串,而不是数字。事实证明,0 到 64 之间的数字看起来像这样
[1-6]?[0-9]
有些可能包含一个范围(但不是 space 或逗号)
[1-6]?[0-9](\-[1-6]?[0-9])?
编辑
这里我手动输入了 spaces 和逗号加上一个“?”紧随其后(出现一次或根本不出现),如果您允许多个 space,请更改相关的“?”到 "*" 我不能 100% 保证这会奏效,但逐步构建它,我相信它会奏效。
\([1-6]?[0-9]\( ?\- ?[1-6]?[0-9]\)? ?,? ?\)+
如果我做得更好,我会尝试更新。
编辑2
如果我在分组中正确写入,我的旧模式将匹配 0。让我们试试这个:
((([1-5]?[0-9])|(6[0-4])((\s?\-\s?([1-5]?[0-9])|(6[0-4]))?)(\s?,\s?)?)+
祝您编程愉快!如果您有任何问题,请发表评论。
给你,
^(?:6[0-4]|[1-5]\d|[1-9])(?: *- *(?:6[0-4]|[1-5]\d|[1-9]))?(?: *, *(?:6[0-4]|[1-5]\d|[1-9])(?: *- *(?:6[0-4]|[1-5]\d|[1-9]))?)*$
我使用 <space>*
而不是 \s*
因为 \s
也匹配换行符。如果您对换行符没有问题,请使用 \s
而不是 space。如果要允许可选的 space 不是零个或多个 space,请使用 \s?
而不是 <space>*
。
这应该匹配 1-64 之间的整数。
([1-9]|[1-5][0-9]|6[0-4])
这也应该接受范围。
([1-9]|[1-5][0-9]|6[0-4])(-([1-9]|[1-5][0-9]|6[0-4]))?
在一行中匹配一个或多个。
^(([1-9]|[1-5][0-9]|6[0-4])(-([1-9]|[1-5][0-9]|6[0-4]))?\s*($|,\s*))+$