匹配数字与字符串内的小数分隔符

时间:2015-12-11 08:58:29

标签: javascript regex

这将符合我的要求:

/\d+\.\d+/

这将在字符串的开头匹配:

/^\d+\.\d+$/

这个用于单词边界:

/\b\d+\.\d+\b/

我希望匹配这样的数字:

1.00000 // true
    1.0000 // true
1.0000     // true
bla1.0000 // true
1.0000bla // true
27.05.1989 // false (date)

1 个答案:

答案 0 :(得分:2)

您只能在以下正则表达式的帮助下实现这一目标:

(?:^|[^\d.])(\d+\.\d+)(?![.\d])

请参阅regex demo



var re = /(?:^|[^\d.])(\d+\.\d+)(?![.\d])/gm; 
var str = '1.00000\n // true\n1.0000\n // true\nbla1.0000\n // true\n27.05.1989\n // false (date)';
var m;
 
while ((m = re.exec(str)) !== null) {
    document.getElementById("r").innerHTML += m[1] + "<br/>";
}
&#13;
<div id="r"/>
&#13;
&#13;
&#13;

正则表达式解释

  • (?:^|[^\d.]) - 匹配字符串start(^)或除数字和字面点以外的字符
  • (\d+\.\d+) - 匹配并捕获到第1组1个或更多数字后跟一个文字点后跟一个或多个数字
  • (?![.\d]) - 确保浮动值后没有.或数字