【问题标题】:Regex Explanation required需要正则表达式解释
【发布时间】:2023-02-03 20:47:28
【问题描述】:

我的正则表达式:

\d{0,2}\.?\d{0,3}r?em

要匹配的字符串:

12123rem

为什么它匹配5位数字?

我希望它只匹配以下模式: 12em 或 12 rem 或 12.345em 或 12.345rem

最多 3 位小数。

【问题讨论】:

  • 2 位数字 + 3 位数字 = 5 位数字。点是可选的。
  • 您可能希望将小数部分设为可选:(?:\.\d{0,3})?
  • @adiga 除了这个也是“12.rem”。正则表达式:\d{0,2}(?:\.\d{0,3})rem

标签: javascript regex


【解决方案1】:

试试这个:

^d{0,2}(.d{1,3})?s?r?em$

Here is a demo

  • ^ - 确保我们在字符串的开头
  • ^d{0,2}字符串开头后最多两位小数为零
  • (.d{1,3}) 可选的 1 至 3 位数字组,前面带有 .
  • s?可选空白字符
  • r?可选r字符
  • em必填em
  • $字符串结尾

【讨论】:

  • 这也匹配“12.rem”。小数点后不能没有数字。
  • @Sushmit Sagar 我认为你想要什么,因为我没有更改正则表达式的这一部分。无论如何-我已经开玩笑地纠正了它。
  • 如果有小数,则必须有数字,但不能。是“12”。
  • 修好了,检查一下。
  • 你也想匹配 .345rem 吗?如果不将 ^d{0,2} 更改为 ^d{1,2} 请注意,它不会接受点前超过 2 位数字的任何数字(即 101.01rem)。
猜你喜欢
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多