我有一个输入字段只能接受这些格式( 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(这里只应该接受一个字符)
请为我的字段格式提供准确的正则表达式帮助。
答案 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
^
匹配字符串的开头,$
匹配字符串的结尾。