Javascript Regex替换非数字字符,并在键入电话号码时插入破折号
我需要javascript来格式化键入的电话号码。这将替换所有非数字字符,并在用户未键入时插入破折号。到目前为止,这是我得到的最接近的一次,但是如果他们在错误的位置放了一个破折号,它就会被扔掉。理想的解决方案是只在错误的位置替换破折号。我正在寻找一种可能以不同方式替换第4位和第8位的方法,但还没有找到解决方案Javascript Regex替换非数字字符,并在键入电话号码时插入破折号,javascript,regex,Javascript,Regex,我需要javascript来格式化键入的电话号码。这将替换所有非数字字符,并在用户未键入时插入破折号。到目前为止,这是我得到的最接近的一次,但是如果他们在错误的位置放了一个破折号,它就会被扔掉。理想的解决方案是只在错误的位置替换破折号。我正在寻找一种可能以不同方式替换第4位和第8位的方法,但还没有找到解决方案 $('#TelephoneNo').keyup(function (ev) { if (/[^0-9\-]/g.test(this.value)) {
$('#TelephoneNo').keyup(function (ev) {
if (/[^0-9\-]/g.test(this.value))
{
this.value = this.value.replace(/[^0-9\-]/g, '');
}
if (/^(\d{3})(\d)/.test(this.value))
{
this.value = this.value.replace(/^(\d{3})(\d)/, '$1-$2');
}
if (/^(\d{3}-\d{3})(\d)/.test(this.value))
{
this.value = this.value.replace(/^(\d{3}-\d{3})(\d)/, '$1-$2');
}
});
假设您需要“123-456-7890”格式:
函数CheckNum(ev){
var inputval=document.getElementById(“电话号码”).value;
调试器
如果(输入值){
如果(/[^0-9\-]/g.test(输入值))
{
inputval=inputval.replace(/[^0-9\-]/g');
}
if(检测位置()){
if(/^(\d{3})(\d)/.test(inputval))
{
inputval=inputval.replace(/^(\d{3})(\d)/,“$1-$2”);
}
if(/^(\d{3}-\d{3})(\d)/.test(inputval))
{
inputval=inputval.replace(/^(\d{3}-\d{3})(\d)/,“$1-$2”);
}
}
document.getElementById(“电话号码”).value=inputval;
}
}
函数detectPosition(){var inputval=document.getElementById(“电话号码”).value;
if(inputval.indexOf(“-”==4 | | inputval.indexOf(“-”==8)
{
返回1;
}
返回-1;
}
我强烈建议您这样做可以节省时间和头痛!另一个很好的选择是jQuery掩码:我认为这不起作用,因为键入的数字是空的,除非有10个数字。你能给我你期望的输出999-999-9999格式是正确的吗。事件在每次键入字符时发生。如果用户键入1234,则将文本更改为123-4;如果用户键入123-4567,则文本更改为123-456-7。是的,除非用户在错误的位置键入破折号,否则该代码有效。例如,99-99将完全停止格式化。我需要一个解决方案,该解决方案可以将破折号的格式设置为与999-999-9999匹配,即使该数字是部分键入的。如果不允许用户键入“-”,则不存在不正确的可能性。如果我使用/[^0-9]/g,如果他们决定自行设置破折号的格式,则会不断删除该破折号,这可能会造成混乱。如果破折号正好插入三个数字之后,而不是等待第四个.if(inputval.indexOf(“-”==4 | | inputval.indexOf(“-”==8){alert(inputval.indexOf(“-”);}
function formatPhoneNumber(s) {
var s2 = (""+s).replace(/\D/g, '');
var m = s2.match(/^(\d{3})(\d{3})(\d{4})$/);
return (!m) ? null : m[1] + " -" + m[2] + "-" + m[3];
}
<html>
<head>
<script type="text/javascript">
function CheckNum(ev) {
var inputval=document.getElementById("TelephoneNo").value;
debugger
if(inputval){
if (/[^0-9\-]/g.test(inputval))
{
inputval = inputval.replace(/[^0-9\-]/g, '');
}
if(detectPosition()){
if (/^(\d{3})(\d)/.test(inputval))
{
inputval = inputval.replace(/^(\d{3})(\d)/, '$1-$2');
}
if (/^(\d{3}-\d{3})(\d)/.test(inputval))
{
inputval = inputval.replace(/^(\d{3}-\d{3})(\d)/, '$1-$2');
}
}
document.getElementById("TelephoneNo").value=inputval;
}
}
function detectPosition() { var inputval=document.getElementById("TelephoneNo").value;
if(inputval.indexOf("-") ==4 || inputval.indexOf("-") ==8)
{
return 1;
}
return -1;
}
</script>
</head>
<body>
<input type="text" id="TelephoneNo" onkeyup="CheckNum(this)">
</body>
</html>