这个正则表达式与我认为应该的东西不匹配

时间:2011-09-19 17:10:11

标签: javascript regex

我的网络应用程序中有一个字段,用户需要输入一个或多个以一个或多个句点分隔的数字。

以下是用户可以输入的典型示例:

589327498321.43243214.32421423。

我编写了以下JavaScript代码来测试值:

var uid = $(this).val();
var uidRegex = /(^\d|\.$)+/;
var isValid = uidRegex.test(uid);

我收到了错误的结果。似乎这段代码告诉我,如果用户的条目以数字或句点开始,则该条目有效。如何解决这个问题,以便整个条目必须完全由数字和句点组成?

7 个答案:

答案 0 :(得分:3)

听起来你正在寻找的模式是

  

数字后跟任意数字点+数字序列

若然,请尝试以下/^(\d)+(\d|\.\d)+$/

修改

OP在评论中指出连续点是合法的。这是更新的正则表达式,以及/^(\d)+(\d|\.)+$/

答案 1 :(得分:0)

/^(\d|\.)+$/

应该这样做=]

答案 2 :(得分:0)

var uidRegex = /[^\d.]/;
var isValid = ! uidRegex.test(uid);

http://jsfiddle.net/uKm7F/


如果您想禁止字符串开头的句号,请使用:

var uidRegex = /(?:[^\d.]|^\.)/;
var isValid = ! uidRegex.test(uid);

http://jsfiddle.net/uKm7F/6/

答案 3 :(得分:0)

您也可以考虑:

var uidRegex = /^\d+(\d|\.)+$/;

答案 4 :(得分:0)

这种模式怎么样:/^\d+(\.+\d+)*$/

答案 5 :(得分:0)

/^\d[\d\.]*$/
  ^   ^--any number of digits or periods
  |-start with a digit

答案 6 :(得分:0)

如果您的字段是必填字段(并且必须包含至少2个字符),则可以执行此操作:

/^(\d)+(\d|\.)*(\d)+$/