以下正则表达式:
x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, "-");
在每个第三个字符后添加短划线,因此输入123456789
变为123-456-789
。
我试图用这个正则表达式来格式化电话号码。问题出现在第10个字符上。因此输入的1234567890
变为1-234-567-890
。
如何修改上述正则表达式以将包含10位数的字符串转换为123-456-7890
。我使用这个正则表达式,因为这是因为用户输入使用 keyup 事件。
如果您知道更简单或更好的方法,请帮助我,在用户输入时必须添加破折号。不允许其他字符。
备注:
答案 0 :(得分:11)
怎么样
> "12345678".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
"123-456-78"
> "123456789".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
"123-456-789"
> "1234567890".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
"123-456-7890"
答案 1 :(得分:1)
你是否需要为所有事情使用正则表达式,或者这样的事情也可以帮助你?
function convertToValidPhoneNumber(text) {
var result = [];
text = text.replace(/[^\d]/g,"");
while (text.length >= 6) {
result.push(text.substring(0, 3));
text = text.substring(3);
}
if(text.length > 0) result.push(text);
return result.join("-");
}
每次输入字段中的文本发生更改时,您都可以使用此功能。它将产生以下结果:
"12345678" -> "123-45678"
"123d456789" -> "123-456-789"
"123-4567-89" -> "123-456-789"
答案 2 :(得分:1)
如果您已拥有完整的数字或字符串
var x = "329193914";
console.log(x.replace(/(\d{3})(\d{3})(\d{3})/, "$1-$2-$3"));
如果您想要有人打字......
$('#locAcct').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);
});
答案 3 :(得分:0)
我相信最简单的方法是在每一个 n digits
之后添加破折号
var a = $('#result');
var x = "<p>asiija kasdjflaksd jflka asdkhflakjshdfk jasd flaksjdhfklasd f</p><p>12345678912345678912345678912312344545545456789</p>"
a.html(x.replace(/(\d{15})/g, "$1-"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="result"></div>
答案 4 :(得分:0)
最简单的方法是以下使用简单的 javascript onkey 和函数...它会在您输入/键入的每 3 个字符后放置一个破折号。
<input type="text" class="form-control" name="sector" id="sector" onkeyup="addDash(this)" required>
添加以下脚本
<script>
function addDash (element) {
let ele = document.getElementById(element.id);
ele = ele.value.split('-').join(''); // Remove dash (-) if mistakenly entered.
let finalVal = ele.match(/.{1,3}/g).join('-');
document.getElementById(element.id).value = finalVal;
}
</script>