我该如何解决此代码以仅在第三个数字后才应用-
,所以输出看起来像
778-2299
不是778-229-9
,因为您可以看到代码是每3位数字后添加-
$('.phonenumber').keyup(function() {
var foo = $(this).val().split("-").join(""); // remove hyphens
if (foo.length > 0) {
foo = foo.match(new RegExp('.{1,3}', 'g')).join("-");
}
$(this).val(foo);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="phonenumber" maxlength="8"/>
答案 0 :(得分:2)
您可以使用:
.replace(regexp|substr, newSubstr|function):...方法返回一个新字符串,该字符串的部分或全部匹配都由替换符替换。
$('.phonenumber').keyup(function() {
var foo = $(this).val().split("-").join(""); // remove hyphens
if (foo.length > 0) {
foo = foo.replace(/(\d{3})(\d*)/, '$1-$2');
}
$(this).val(foo);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="phonenumber" maxlength="8"/>
答案 1 :(得分:0)
不使用g
标志吗?这意味着“全局搜索匹配的模式”,但是您只希望它与第一个匹配,因此您不需要该标志。
答案 2 :(得分:0)
我不确定为什么需要正则表达式。只需使用旧的substring
。
我也将其更改为使用input
事件,因为它在触发时(在value
更新之后)更加一致
$('.phonenumber').on('input', function() {
var foo = $(this).val().split("-").join(""); // remove hyphens
if (foo.length === 7) {
foo = `${foo.substring(0,3)}-${foo.substring(3)}`;
// or if you're kickin it old skool:
// foo = foo.substring(0,3) + "-" + foo.substring(3);
}
$(this).val(foo);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="phonenumber" maxlength="8"/>