2

我正在使用以下正则表达式来验证 CSS 大小:

([0-9]*\.?[0-9]+)(em|px|%)

因此,以下尺寸是有效的:

  • 10像素
  • 10.2像素
  • 1.5em
  • 100%

如何更改正则表达式以使单位 (em|px|%) 可选以仅允许数字?

4

3 回答 3

4

您可以简单地?在末尾添加以使该单元可选。

([0-9]*\.?[0-9]+)(em|px|%)?

由于该单元现在是可选的,因此此模式也将允许仅数字实体。但是请注意,执行某些操作也会部分匹配使以下内容有效的内容。

  • 10pt
  • 10无效

如果这是一个问题,那么您可以添加^字符串开头和 $行尾字符串模式修饰符来限制检查。

([0-9]*\.?[0-9]+)(em|px|%)?$
于 2013-11-06T12:18:04.507 回答
1

要么使整个组可选

([0-9]*\.?[0-9]+)(em|px|%)?

或为空字符串添加另一种选择:

([0-9]*\.?[0-9]+)(em|px|%|)

optional-group 正则表达式将捕获undefined仅数字值,另一个正则表达式将捕获空字符串""

于 2013-11-06T12:19:31.017 回答
0

如果您实际上想要匹配emOR pxOR %(但可选),您可以简单地使用?

([0-9]*\.?[0-9]+)(em|px|%)?$

编辑

现在我明白了这个问题。还添加了无效匹配的锚原因。

于 2013-11-06T12:21:24.863 回答