在JavaScript中输入字段验证

时间:2015-07-23 09:59:34

标签: javascript jquery regex javascript-events

我有一个输入字段只能接受这些格式( d-digit,c-character ):

d.d
d.d.d
d.d.c

我的代码:

var format1 = /[0-9]{1,}\.[0-9]{1,}/g; // d.d
var format2 = /[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}/g; // d.d.d    
var format3 = /[0-9]{1,}\.[0-9]{1,}\.[a-zA-Z]{1,}/g; // d.d.c    

if (format1.test(input)) {
    format1Con = true;
}
if (format2.test(input)) {
    format2Con = true;
}
if (format3.test(input)) {
    format3Con = true;
}

此代码允许一些错误的类型值。 例如 -           1.2.3.33,           1.2.ccccc(这里只应该接受一个字符)

请为我的字段格式提供准确的正则表达式帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用

/^\d\.\d+(?:\.(?:\d|[a-z]))?$/i

请参阅demo

正则表达式匹配......

  • ^ - 字符串的开头
  • \d - 数字
  • \. - 一个文字点
  • \d+ - 一位或多位
  • (?:\.(?:\d|[a-z]))? - 一个匹配的可选组
    • \. - 字面点和......
    • (?:\d|[a-z]) - 来自[a-zA-Z]范围的单个数字或字母(因为使用了i修饰符)
  • $ - 字符串结束
    var re = /^\d\.\d+(?:\.(?:\d|[a-z]))?$/; 
    document.write('1.2.3.33: ' + re.test('1.2.3.33') + "<br/>");
    document.write('1.2.ccccc: ' + re.test('1.2.ccccc') + "<br/>");
    document.write('1.2: ' + re.test('1.2') + "<br/>");
    document.write('1.22: ' + re.test('1.22') + "<br/>");
    document.write('1.22.3: ' + re.test('1.22.3') + "<br/>");
    document.write('1.2.3: ' + re.test('1.2.3') + "<br/>");
    document.write('1.2.x: ' + re.test('1.2.x') + "<br/>");

答案 1 :(得分:1)

您可以像这样修改您的RegEXP:

var format1 = /^[0-9]{1,}\.[0-9]{1,}$/g; // d.d
var format2 = /^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}$/g; // d.d.d    
var format3 = /^[0-9]{1,}\.[0-9]{1,}\.[a-zA-Z]{1,}$/g; // d.d.c    

^匹配字符串的开头,$匹配字符串的结尾。