我在检查字符串输入时是否有问题。 应该可以像这样写:(数字)d(数字)h(数字)m 可以省略每个部分,并且数字没有限制(例如2352h)。 一些可能性如下:
我使用以下RegEx,它工作得很好,但有一个问题,即一个字母可以多次使用(例如52d 23d)。 我希望每封信都可以使用一次。空格是可选的。 这就是我现在所拥有的:
^((\d{0,9}[dh]\s?){0,1}(\d{0,9}m)?){1,3}\s*$
任何人都可以帮助我吗?
答案 0 :(得分:1)
试试这个正则表达式:
^(?=.*[hmd]$)\d+(?:d\s*)?\d*(?:h\s*)?\d*(?:m\s*)?$
<强>解释强>
^
- 断言字符串的开头(?=.*[hmd]$)
- 确定字符串以d
,h
或m
\d+(?:d\s*)?
- 匹配1位出现的数字,后跟可选的d
后跟0+空格\d*(?:h\s*)?
- 匹配0次出现的数字,然后是可选的h
,后跟0+空格\d*(?:m\s*)?
- 匹配0次出现的数字,然后是可选的m
,后跟0+空格$
- 断言字符串的结尾