Skip to content

Instantly share code, notes, and snippets.

@iamspark1e
Last active July 18, 2023 06:28
Show Gist options
  • Save iamspark1e/742dc220754c50ca1146670db4756872 to your computer and use it in GitHub Desktop.
Save iamspark1e/742dc220754c50ca1146670db4756872 to your computer and use it in GitHub Desktop.
var arr = [{"name":"中国大陆","plus":"86"},{"name":"香港地区","plus":"852","afterLength":8,"prefix":"5,6,9"},{"name":"台湾地区","plus":"886","afterLength":9,"prefix":"9"},{"name":"澳门地区","plus":"853","afterLength":8,"prefix":"6"},{"name":"澳大利亚","plus":"61","afterLength":9,"prefix":"4"},{"name":"巴西","plus":"55","afterLength":{"max":11,"min":10}},{"name":"德国","plus":"49","afterLength":{"max":11,"min":10},"prefix":"15,16,17"},{"name":"俄罗斯","plus":"7","afterLength":10,"prefix":"901,902,903,904,905,906,908,909,91,92,93,950,951,952,953,96,98,99"},{"name":"法国","plus":"33","afterLength":9,"prefix":"6,73,74,75,76,77,78"},{"name":"菲律宾","plus":"63","afterLength":10,"prefix":"9"},{"name":"韩国","plus":"82","afterLength":10,"prefix":"1"},{"name":"美国","plus":"1","afterLength":10},{"name":"柬埔寨","plus":"855","afterLength":{"max":10,"min":8},"prefix":"1,38,6,7,8,9"},{"name":"老挝","plus":"856","afterLength":{"max":10,"min":9},"prefix":"20"},{"name":"马来西亚","plus":"60","afterLength":{"max":10,"min":9},"prefix":"1"},{"name":"缅甸","plus":"95","afterLength":{"max":10,"min":8},"prefix":"9,64"},{"name":"日本","plus":"81","afterLength":10,"prefix":"70,80,90"},{"name":"泰国","plus":"66","afterLength":10,"prefix":"06,08,09"},{"name":"文莱","plus":"673","afterLength":{"max":8,"min":7},"prefix":"8"},{"name":"西班牙","plus":"34","afterLength":9,"prefix":"6,7"},{"name":"新加坡","plus":"82","afterLength":8,"prefix":"8,9"},{"name":"新西兰","plus":"64","afterLength":{"max":10,"min":8},"prefix":"2"},{"name":"意大利","plus":"39","afterLength":{"max":10,"min":9},"prefix":"3"},{"name":"印度","plus":"91","afterLength":10,"prefix":"9,8,7"},{"name":"印尼","plus":"62","afterLength":{"max":10,"min":8},"prefix":"8"},{"name":"英国","plus":"44","afterLength":10,"prefix":"73,74,75,7624,77,78,79"},{"name":"越南","plus":"84","afterLength":{"max":10,"min":9},"prefix":"1,3,5,7,8,9"},{"name":"波兰","plus":"48","afterLength":9,"prefix":"4,5,6,7,8"}]
var a = {
"0086": {name: "中国大陆", plus: "86"},
"00852": {name: "香港地区", plus: "852", afterLength: 8, prefix: "5,6,9"},
"00886": {name: "台湾地区", plus: "886", afterLength: 9, prefix: "9"},
"00853": {name: "澳门地区", plus: "853", afterLength: 8, prefix: "6"},
"0061": {name: "澳大利亚", plus: "61", afterLength: 9, prefix: "4"},
"0055": {name: "巴西", plus: "55", afterLength: {max: 11, min: 10}},
"0049": {name: "德国", plus: "49", afterLength: {max: 11, min: 10}, prefix: "15,16,17"},
"007": {name: "俄罗斯", plus: "7", afterLength: 10, prefix: "901,902,903,904,905,906,908,909,91,92,93,950,951,952,953,96,98,99"},
"0033": {name: "法国", plus: "33", afterLength: 9, prefix: "6,73,74,75,76,77,78"},
"0063": {name: "菲律宾", plus: "63", afterLength: 10, prefix: "9"},
"0082": {name: "韩国", plus: "82", afterLength: 10, prefix: "1"},
"001": {name: "加拿大", plus: "1", afterLength: 10},
"00855": {name: "柬埔寨", plus: "855", afterLength: {max: 10, min: 8}, prefix: "1,38,6,7,8,9"},
"00856": {name: "老挝", plus: "856", afterLength: {max: 10, min: 9}, prefix: "20"},
"0060": {name: "马来西亚", plus: "60", afterLength: {max: 10, min: 9}, prefix: "1"}, // afterLength can be 9 or 10
"001": {name: "美国", plus: "1", afterLength: 10},
"0095": {name: "缅甸", plus: "95", afterLength: {max: 10, min: 8}, prefix: "9,64"},
"0081": {name: "日本", plus: "81", afterLength: 10, prefix: "70,80,90"},
"0066": {name: "泰国", plus: "66", afterLength: 10, prefix: "06,08,09"},
"00673": {name: "文莱", plus: "673", afterLength: {max: 8, min: 7}, prefix: "8"},
"0034": {name: "西班牙", plus: "34", afterLength: 9, prefix: "6,7"},
"0065": {name: "新加坡", plus: "82", afterLength: 8, prefix: "8,9"},
"0064": {name: "新西兰", plus: "64", afterLength: {max: 10, min: 8}, prefix: "2"},
"0039": {name: "意大利", plus: "39", afterLength: {max: 10, min: 9}, prefix: "3"},
"0091": {name: "印度", plus: "91", afterLength: 10, prefix: "9,8,7"},
"0062": {name: "印尼", plus: "62", afterLength: {max: 10, min: 8}, prefix: "8"},
"0044": {name: "英国", plus: "44", afterLength: 10, prefix: "73,74,75,7624,77,78,79"},
"0084": {name: "越南", plus: "84", afterLength: {max: 10, min: 9}, prefix: "1,3,5,7,8,9"},
"0048": {name: "波兰", plus: "48", afterLength: 9, prefix: "4,5,6,7,8"},
}
var currentRule = a["0086"];
var validPhone = true;
var multiRegexp = currentRule.prefix ? currentRule.prefix.split(",") : [""];
for (var i = 0; i < multiRegexp.length; i++) {
var reg = new RegExp('^(' +
multiRegexp[i] +
')\\d{' +
(currentRule.afterLength.max ?
((currentRule.afterLength.min - multiRegexp[i].length) + "," + (currentRule.afterLength.max - multiRegexp[i].length)) :
(currentRule.afterLength - multiRegexp[i].length)) +
'}$'
)
if (!reg.test(phone)) {
console.log(reg);
validPhone = false;
break;
}
}
if (!validPhone) {
console.error("Mobile not passed!")
return;
}

00前缀是中国使用的国际接入码,如果从美国拨出的国际电话,美国规定使用011作为国际接入码(亦称国际冠码)

为方便用户记忆和拨号,在GSM(全球移动通信系统)的规范中规定“+”是通用的国际接入代码,即在任何国家GSM网络中,都可以用“+”代替国际接入码。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment