gpt4 book ai didi

javascript - 如何创建 "progressively matching"正则表达式?

转载 作者:数据小太阳 更新时间:2023-10-29 04:34:41 26 4
gpt4 key购买 nike

我需要一个正则表达式来匹配用户键入的字符串。这有点难以解释,所以让我展示一下我的意思:

它应该匹配这个字符串:

“XXXX 单位”,其中 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

关于javascript - 如何创建 "progressively matching"正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34139288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com