Javascript正则表达式匹配相对单位

时间:2013-08-13 22:47:27

标签: javascript regex

我希望匹配表示相对(任意)单位的字符串部分。例如“+ = 50foo”,“ - = 300bar”,“ - 3%”。我大部分时间都在那里,但我得到一些输入的奇怪错误,我没有看到模式或修复。

var myRegEx = new RegExp( "^([+-])=(\\d+\.?\\d*)(\\D+)$", "i" );

console.log(myRegEx.exec("-=5%")); // good
console.log(myRegEx.exec("+=3.14wigs")); // good
console.log(myRegEx.exec("+=50px")); // broken: "50p", "x"
console.log(myRegEx.exec("+=49999999px")); // broken: "49999999p", "x"
console.log(myRegEx.exec("+=100em")); // broken: "100e" , "m"

http://jsfiddle.net/sNd9W/

3 个答案:

答案 0 :(得分:1)

这应该有用(请注意点附近的其他\):

var myRegEx = new RegExp( "^([+-])=(\\d+\\.?\\d*)(\\D+)$", "i" );

答案 1 :(得分:1)

这是一个更清洁的解决方案:

var myRegEx = /^([+-])=(\d+\.?\d*)(\D+)$/i;

由于双引号字符串执行自己的转义,因此您的解决方案没有正确地双重转义句点(您有\。,需要\\。)。为了简单起见,我根本没有使用字符串。

行动中的示例: http://jsfiddle.net/sNd9W/2/

答案 2 :(得分:-1)

var myRegEx = /^([+-])=([\d.]+)(.+)$/i;

http://jsfiddle.net/sNd9W/3/

第一个捕获组是+/- 第二个是数字和小数组 最后剩下的一切。