JavaScript/jQuery中基于格式字符串的格式编号
假设我有一个JavaScript/jQuery中基于格式字符串的格式编号,javascript,jquery,formatting,string-formatting,Javascript,Jquery,Formatting,String Formatting,假设我有一个 格式字符串“XXX-XXX-XXXX”(用于设置电话号码的格式),或X表示号码的任何其他格式字符串 我希望保留格式字符串中的格式(间距、破折号等),但将每个X交换为一个数字,并删除源字符串中的所有格式 示例: 输入:“abc+d(123)4567890”,格式字符串:“XXX-XXX-XXXX”,输出:“123-456-7890” 输入“ABCC1234567890”,格式字符串:“X:X!XXXXX,XXX”,输出:“1:2!34567890” 输入“1234567890”
- 格式字符串“XXX-XXX-XXXX”(用于设置电话号码的格式),或X表示号码的任何其他格式字符串
- 我希望保留格式字符串中的格式(间距、破折号等),但将每个X交换为一个数字,并删除源字符串中的所有格式
- 输入:“abc+d(123)4567890”,格式字符串:“XXX-XXX-XXXX”,输出:“123-456-7890”
- 输入“ABCC1234567890”,格式字符串:“X:X!XXXXX,XXX”,输出:“1:2!34567890”
- 输入“1234567890”,格式字符串:“(XXX)XXX-XXXX”,输出:“(123)456-7890”
"abc+d(123)4567890"
.replace(/\D/g, "")
.replace(/(\d{3})(\d{3})(\d{4})/, "$1 - $2 - $3")
首先删除非数字(\D),然后对它们进行分组,最后在替换文本中使用分组。这里有一种方法:
function formatPhoneNumber(input, format) {
// Strip non-numeric characters
var digits = input.replace(/\D/g, '');
// Replace each "X" with the next digit
var count = 0;
return format.replace(/X/g, function() {
return digits.charAt(count++);
});
}
抱歉,我不清楚格式字符串可能不同(例如,可能更改为X-XXX-XX-XX),因此它需要能够处理一般格式。