正则表达式可选后缀

时间:2013-11-06 12:15:10

标签: regex

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

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

以下尺寸有效:

  • 10px的
  • 10.2px
  • 1.5em
  • 100%

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

3 个答案:

答案 0 :(得分:2)

您只需在末尾添加?即可使该单位成为可选项。

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

由于该单位现在是可选的,因此该模式也只允许数字实体。但请注意,做某些内容也会部分匹配以下内容的有效内容。

  • 10PT
  • 10notvalid

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

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

答案 1 :(得分:1)

制作整个小组optional

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

或为空字符串添加另一个alternative

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

可选组正则表达式将捕获undefined仅数字值,另一个正则表达式将捕获空字符串""

答案 2 :(得分:0)

如果您确实想要匹配empx%(但可选),您只需使用?

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

修改

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