如何在Angular2中的Array <string | =“”regexp =“”>中添加值

时间:2017-09-22 05:49:31

标签: javascript arrays angular typescript masking

我在Angular2&amp;中面对一个问题正则表达式

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

  • XXX XXX XXXX
  • XXXXXXXXXX
  • XXXXX XXXXX

上面的包使用了数组格式

我有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但是掩盖不起作用

1 个答案:

答案 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/'"

是一串格式化的字符串。因此,当您拆分它时,您将只获得类似"'('"的字符串化字符串。

你必须解析它。以下示例将有所帮助:

&#13;
&#13;
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;
&#13;
&#13;