2012-09-21 33 views
1
var text6 = document.getElementById("text6").value; 
    var regularExpression1 = /^[1-9]?[0-9]{1}$|^100$/; 

    if (!text6.match(regularExpression1)){ 
      alert("Please enter Valid Age"); 
      return false; 
     } 

年龄场的正则表达式此代码不能正常工作我想在JavaScript

+1

您正在尝试使用**正则表达式**来验证**整数**值? – Passerby

+0

雅但是在数据库中它的一个字符串 –

+0

什么是不工作?哪些测试用例失败?你想验证什么? – akluth

回答

0

你的正则表达式使用|但没有()

/(^[1-9]?[0-9]{1}$|^100$)/会工作,但它可能会更好。该表达式可简化为/^([1-9]?\d|100)$/,即不需要重复^$,[0-9]可以是\d,并且{1}总是不必要的。

我不确定正则表达式最适合验证一个时代,我不确定为什么你不能简化到/^\d{1,3}$/。事情可能会超过100岁,甚至人。

我也会验证字段使用/regex/.test()而不是string.match(/regex/)

如果你有一个年龄范围限制,然后在'正常代码'而不是正则表达式中测试,那么更容易跟踪和修改(如果你的上限改变了)。

+0

您的正则表达式在测试詹姆斯债券的代理人数时失败:'/^\ d {1,3} $ /。test('007')=== true;'。这是错误的,因为'007'不是一个有效的整数 –

+0

@ gion_13:007是一个有效的整数。你从哪里采取这些限制?我也没有说'/^\ d {1,3} $ /'是所有有效整数的正则表达式。 7,07,007和0007都是等价的,我不知道为什么有人会强制用户遵守任何特定的约定,系统越烦人,使用它就越少。 –

+0

容易,不要那么私人。我并不是在说卑鄙,我只是指出你可以改进你的答案。如果你不这是你的选择。在这种情况下,你需要验证一个年龄(不是整数,Sry),我在你的答案中发现错误。我并没有试图强制任何人坚持我的(或任何其他)具体的约定,因为我认为一个年龄不能从零开始(如果你想说你已经三十七岁了,成为我的客人)。 –

3

请勿使用正则表达式。使用此功能检查东西是否为数字

function isNumber(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 

而对于你的情况

function isIntegerBetween0And100(n) { 
    return isNumber(n) && n>0 && n<=100 && n%1===0; 
} 

快得多:)

+0

那符合要求怎么样?看看正则表达式,要求是一个介于0和100之间的值,没有小数位。 –

+0

是的,修正了它。谢谢! –