我正在尝试在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 ]
我已经测试了它,但我想确定结构是否正确。
答案 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)
答案 3 :(得分:0)
我会这样写。
/\d*\.?\d+(?:px|%)?/g