我在Angular2&中面对一个问题正则表达式
Angular 2中使用的此包 https://github.com/text-mask/text-mask/
文档 https://github.com/text-mask/text-mask/tree/master/angular2#readme
我的问题我可以使用5-6种电话格式
喜欢
(XXX)XXX XXXX
(XXX)XXX-XXXX
XXX-XXX-XXXX
上面的包使用了数组格式
我有String这种格式
'(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/
如何添加数组格式
我可以试试这段代码
代码-1:
var phoneFormat:Array<string | RegExp>;
var format="'(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/'";
var ArrayObj=format.split(',');
for ( var i = 0; i < ArrayObj.length; i++ ) {
phoneFormat.push(ArrayObj[i]);
}
错误:
Error: Uncaught (in promise): TypeError: Cannot read property 'push' of undefined
TypeError: Cannot read property 'push' of undefined
代码-2
var format=['(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/'];
phoneFormat=format;
Code-2 No Error但是掩盖不起作用
答案 0 :(得分:0)
如评论所示,您收到以下错误:
TypeError:无法读取属性&#39; push&#39;未定义的
因为你没有初始化数组。
var phoneFormat:Array<string | RegExp>;
只是类型定义。您必须执行var phoneFormat:Array<string | RegExp> = [];
现在
"'(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/'"
是一串格式化的字符串。因此,当您拆分它时,您将只获得类似"'('"
的字符串化字符串。
你必须解析它。以下示例将有所帮助:
var phoneFormat: Array <string | RegExp> = [];
var format = "'(','/[1-9]/','/\d/','/\d/',')',' ','/\d/','/\d/','/\d/',' ','/\d/','/\d/','/\d/','/\d/'";
format.split(',').forEach(function(value){
if(value.startsWith('\'/')) {
phoneFormat.push(new RegExp(value.substring(2, value.length-2)));
}
else {
phoneFormat.push(value.substring(1, value.length-1));
}
});
console.log(phoneFormat)
&#13;