1

只有在字符串中的任何位置包含数字和/或“h”或“H”字符时,我才想验证字符串。

例如

123 - 有效
123h - 有效
1h23 - 有效
h234 - 有效
123H - 有效
asdf -无效
123d -无效

我只能限制数字的字符串,但不能满足 h 的附加要求。我怎样才能做到这一点?

4

5 回答 5

5
^\d*h?\d*$

与忽略大小写选项一起使用。

在 Regexr 上查看

^锚定到字符串的开头。

\d*匹配 0 个或多个数字

h?匹配 0 或 1 小时

\d*匹配 0 个或多个数字

$锚定到字符串的末尾。

于 2012-07-03T05:55:22.730 回答
3

[0-9h]*将匹配任何数字 0-9 或 h。只允许一个,你可以使用“h” [0-9]*h?[0-9]*(我假设你已经在做不区分大小写的操作)。您还可以限制 h 周围的位数,如[0-9]{1,2}h?[0-9]{1,2}.

让我们真正忘乎所以,假设您希望允许以分钟的形式输入 0-59,或者以带有分隔“h”的小时和分钟格式输入:

[0-9]{1,2}h[0-5]?[0-9]|[0-5]?[0-9]
于 2012-07-03T05:49:57.343 回答
1

这应该适合你/[\dh]*/i

您的示例在此处进行了测试。

于 2012-07-03T05:54:06.897 回答
0

这是有效的正则表达式:

^\d*h?H?\d*$

看这里:正则表达式示例

于 2012-07-03T05:52:19.797 回答
0

用这个:

[^h]*h?[^h]*

这应该有效。

于 2012-07-03T06:05:24.297 回答