我需要一个与用户输入字符串匹配的正则表达式.这有点难以解释,所以让我说明我的意思:
它应匹配此字符串:
"XXXX units"
,其中XXXX是任何数字.
但它也应匹配该字符串开头的任何子字符串,因此:
"123" "123 u" "123 uni"
也应该匹配.
但当然,这不应该匹配:
"123 xx"
看起来很简单,但我无法弄明白.这是我最接近的:
^\d+ ?u?n?i?t?s?
...但不幸的是,它也匹配像"123us"这样的字符串.
有人可以帮忙吗?这是javascript,所以我可能会因为缺少外观/前方功能而受到限制......
只需添加一些()
:
/^\d+( (u(n(i(t(s)?)?)?)?)?)?$/
测试:
/^\d+( (u(n(i(t(s)?)?)?)?)?)?$/.test("123 units") -> true /^\d+( (u(n(i(t(s)?)?)?)?)?)?$/.test("123 un") -> true /^\d+( (u(n(i(t(s)?)?)?)?)?)?$/.test("123 ui") -> false /^\d+( (u(n(i(t(s)?)?)?)?)?)?$/.test("12") -> true /^\d+( (u(n(i(t(s)?)?)?)?)?)?$/.test("123 xx") -> false