使用 Javascript 从用户输入的电话号码中提取子字符串
Extract substring out of a user input phone number using Javascript
我从用户那里获得电话号码输入为+XXX-X-XXX-XXXX,(+XXX作为国家/地区代码),(X作为城市代码),(XXX作为第一个3位数字)和(XXX作为第二个4位数字)。我使用正则表达式来确认条目,如以下代码所示;
function validate(form) {
var phone = form.phone.value;
var phoneRegex = /^('+|00)'d{2,3}-'d{1,2}-'d{3}-'d{4}$/g;
//Checking 'phone' and its regular expressions
if(phone == "") {
inlineMsg('phone','<strong>Error</strong><br />You must enter phone number.',2);
return false;
}
if(!phone.match(phoneRegex)) {
inlineMsg('phone','<strong>Error</strong><br />Enter valid phone <br />+xxx-x-xxx-xxxx (or) <br />00xxx-x-xxx-xxxx.',2);
return false;
}
return true;
}
它工作得很好,但问题是
编辑:如果用户输入为 +XXXXXXXXXXX(全部)并按回车键或转到另一个字段,则输入将根据正则表达式自行设置
,即 +XXX-XX-XXX-XXXX。有人可以用一些示例指导我如何完成此任务。谢谢
将元素的 onblur 方法设置为回调,如下所示:
var isValidPhoneNumber = function(string) {
...
}
var reformat = function(string) {
/*
* > reformat('example 123 1 1 2 3 123-45')
* "+123-1-123-1234"
*/
var numbers = string.match(/'d/g);
return '+' + [
numbers.slice(0,3).join(''),
numbers.slice(3,4).join(''),
numbers.slice(4,7).join(''),
numbers.slice(7,11).join('')
].join('-');
}
var reformatPhoneNumber = function() {
var inputElement = this;
var value = inputElement.value;
if (isValidPhoneNumber(value))
inputElement.value = reformat(inputElement.value);
else
// complain to user
}
以下是设置 onblur 回调处理程序的两种示例方法:
document.getElementById('yourinputelement').onblur = reformatPhoneNumber;
<input ... onblur="reformatPhoneNumber"/>
如果需要,您可以使用更多验证代码来扩充reformatPhoneNumber
,或者只是在用户键入数字时不断验证数字。
仅当您的电话号码为 +ABCDEFGHIJK
格式时才执行此操作,请在 if 语句中添加string.match(/^'+'d{11}$/)!==null
。(^
,$
表示字符串的开始和结束,'+
表示加号,'d
表示数字 0-9,重复正好{11}
次)。具体说来:
function isPlusAndEleventDigits(string) {
/*
* Returns whether string is exactly of the form '+00000000000'
* where 0 means any digit 0-9
*/
return string.match(/^'+'d{11}$/)!==null
}
尝试调整输入:
result = subject.replace(/^(('+|00)'d{2,3})-?('d{1,2})-?('d{3})-?('d{4})$/mg, "$1-$3-$4-$5");
然后执行下一个过程。
相关文章:
- 使用gulp-angular gettext从JS文件中提取字符串不起作用
- Javascript:如何通过Regexp从属性中提取字符串
- 使用Node/Javascript提取字符串中的所有占位符
- 需要从随机大小的字符串中提取字符串
- 用unicode字符提取字符串中的单词
- 使用java脚本提取字符串
- JavaScript:如何提取字符串中的复杂内容
- 如何删除“;NULL”;使用Javascript从sails.js中的JSON对象中提取字符串
- 当前面的数字或前面字符的组合未知时提取字符串
- 如何根据 javascript 中的两个字符比较从另一个字符串中提取字符串
- 从两边提取字符串和相等数量的字符
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- 使用 javascript 从脚本标记中提取字符串
- 如何根据某些正则表达式模式提取字符串的“部分”
- 检查是否为数字,如果是字母,则在javascript中提取字符串的一部分
- 介绍JS学生使用isNaN(与其他语句结合使用)提取字符串
- 正则表达式后视以提取字符串
- 从另一个url或字符串中提取字符串
- 使用Javascript提取字符串中的数字
- 在javascript中提取字符串中的数字