Javascript 如何获取从用户接收数字的正则表达式
我正在尝试为美国电话号码编写一个正则表达式,用户可以在其中输入号码并自动输入破折号。 但这里的缺点是,如果用户输入“123”,然后“-”regex将中断,而不是123-456-7890,它将变为123-456780 以下是正则表达式代码:Javascript 如何获取从用户接收数字的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我正在尝试为美国电话号码编写一个正则表达式,用户可以在其中输入号码并自动输入破折号。 但这里的缺点是,如果用户输入“123”,然后“-”regex将中断,而不是123-456-7890,它将变为123-456780 以下是正则表达式代码: $('#AccountFrm_telephone').attr('maxlength', '12'); $('#AccountFrm_telephone').keyup(function(){ $(this).val($(this).val().
$('#AccountFrm_telephone').attr('maxlength', '12');
$('#AccountFrm_telephone').keyup(function(){
$(this).val($(this).val().replace(/^(\d{3})(\d{3})(\d)+$/, "$1-$2-$3"));
});
也许我们在正则表达式中添加了一些东西,用户无法键入dash?也许可以尝试以下操作:
$('AccountFrm_telephone').attr('maxlength','12');
$('#AccountFrm_telephone').keyup(函数(){
$(this.val($(this.val()).replace(/(\d{3})(\d{3})(\d{4})/,“$1-$2-$3”);
});代码>用于完成:
你有两个问题
首先,此部分(\d)+
应为(\d+
),否则无法正确捕获数字上的最后一组。
第二部分是您无法处理输入中可能出现的破折号,因此请尝试以下操作:
.replace(/^(\d{3})-?(\d{3})-?(\d+)$/, "$1-$2-$3")
问号(?)表示0或1次,这意味着用户可以在需要时输入破折号
$(“#input1”).on('keyup',e=>{
e、 target.value=e.target.value.replace(/(\d{3})-?(\d{3})-?(\d+/,“$1-$2-$3”)
})
这部分(\d)+
应该是(\d+)
@Nullman不起作用的:(我已经把你的字符串放入var x
中,下面的代码工作得很好x.replace(\d{3})(\d{3})(\d+$/,“$1-$2-$3”)
我试过了,但如果用户输入“-”,则在3号后面需要破折号“-”然后打破正则表达式stillah,然后像删除的帖子建议的那样,使用以下命令:/^(\d{3})-?(\d{3})-?(\d+)$/,“$1-$2-$3”
注释0或1次