Javascript Regex查找数字后跟'px'或'%'

时间:2015-05-20 07:12:27

标签: javascript regex

我正在尝试在javascript中创建正则表达式来查找px%或根本没有单位的数字,我的问题是看这个正则表达式的结构是正确的。

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

应用程序就像这样

var string  = '10px, 15px, 10';
var regex   = [0-9]*\.?[0-9]+(px|%)?
var matches = string.match( regex ); // return [ '10px', '15px', 10 ]

我已经测试了它,但我想确定结构是否正确。

4 个答案:

答案 0 :(得分:4)

看起来很好,除了你忘了把正则表达式放在正则表达式引号中,你可能希望它不区分大小写,所以:

var regex   = /[0-9]*\.?[0-9]+(px|%)?/i;

请注意,[0-9]可以是\d。此外,如果您没有使用捕获组,则可以将其设为非捕获组。所以:

var regex   = /\d*\.?\d+(?:px|%)?/i;

您不允许在数字之后和px / %之前留出空格,但我认为这是故意的。

答案 1 :(得分:1)

据我了解,您的正则表达式也会匹配.2

试试这个:

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

说明:

[0-9]+是数字

(\.[0-9]+)?是可选的小数部分

(px|%)?是可选单元。

顺便说一句,如果您愿意,可以使用\d作为数字。有些人会说它更具可读性:

\d+(\.\d+)?(px|%)?

答案 2 :(得分:0)

您可以使用以下正则表达式:

var regex = /[0-9]+(?:\.[0-9]+)?(?=px|%|\b)/i;

(?=px|%|\b)会匹配后跟px%或字边界的数字。

请参阅demo

答案 3 :(得分:0)

我会这样写。

/\d*\.?\d+(?:px|%)?/g