只有在字符串中的任何位置包含数字和/或“h”或“H”字符时,我才想验证字符串。
例如
123 - 有效
123h - 有效
1h23 - 有效
h234 - 有效
123H - 有效
asdf -无效
123d -无效
我只能限制数字的字符串,但不能满足 h 的附加要求。我怎样才能做到这一点?
^\d*h?\d*$
与忽略大小写选项一起使用。
^
锚定到字符串的开头。
\d*
匹配 0 个或多个数字
h?
匹配 0 或 1 小时
\d*
匹配 0 个或多个数字
$
锚定到字符串的末尾。
[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]
这应该适合你/[\dh]*/i
您的示例在此处进行了测试。
用这个:
[^h]*h?[^h]*
这应该有效。