正在尝试实现此格式XXX-XXX-XXXX
这是我到目前为止所拥有的:
$('.telnumber').keyup(function() {
var foo = $(this).val().split("-").join(""); // remove hyphens
foo = foo.match(new RegExp('.{1,3}', 'g')).join("-");
$(this).val(foo);
});
前两个块很好,但如何限制最后一个块接受4位?
到目前为止,如果有3位数,它仍然会自动显示。
我不擅长REGEX所以任何想法都会受到赞赏。
答案 0 :(得分:7)
在这里,我认为最好的解决方案。任何非数字字符都将被忽略,最后你不会有额外的破折号。
$('.telnumber').keyup(function() {
this.value = this.value
.match(/\d*/g).join('')
.match(/(\d{0,3})(\d{0,3})(\d{0,4})/).slice(1).join('-')
.replace(/-*$/g, '')
;
});
答案 1 :(得分:4)
foo = foo.match(new RegExp('.{1,4}$|.{1,3}', 'g')).join("-");
答案 2 :(得分:0)
由于您已经在使用jQuery,因此您可能需要查看此jQuery插件: http://digitalbush.com/projects/masked-input-plugin/
答案 3 :(得分:0)
只需在第一个答案中添加正则表达式,就会给出以下结果: XXX-XXX-XXX-XXX-XXX ...
这继续。 :(
因此,我找到了一个更好,更完美的解决方案。只需添加" maxlength = 12'你的输入元素!!查看小提琴链接:
http://jsfiddle.net/juspC/218/
<input type="text" class="telnumber" maxlength="12" />
$('.telnumber').keyup(function() {
foo = $(this).val().split("-").join(""); // remove hyphens
foo = foo.match(new RegExp('.{1,4}$|.{1,3}', 'g')).join("-");
$(this).val(foo);
});
答案 4 :(得分:0)
建立@Anirudha的回答。
我看到其他用户询问光标,如果我在这里讨论主题,我会道歉。
对于那些寻找电话验证功能的人:
将@ Anirudha的正则表达式放在.on('input')而不是.keyUp()中将解决游标问题(因此只有在更改内容时才更新值)。您也可以将其切片并限制为10位数字。
$('.telnumber').on('input', function() {
var foo = $(this).val().split("-").join("").slice(0,10); // remove hyphens
foo = foo.match(new RegExp('.{1,4}$|.{1,3}', 'g')).join("-");
$(this).val(foo);
});