2017-09-22 305 views
1

我需要使用typescript Angular應用程序驗證來自excel文件的電子郵件和日期字段。 我試圖使用正則表達式進行驗證,但是對於正確的電子郵件地址,結果總是返回false。如何使用正則表達式在Typescript中進行電子郵件驗證

任何人都可以幫助我驗證電子郵件和日期嗎?

下面是我寫

組件的代碼:

import { Component } from '@angular/core'; 
import * as FileSaver from 'file-saver'; 
import * as XLSX from 'xlsx'; 
import {UploadService} from '../services//upload.service'; 


import { FileUploader ,FileItem,ParsedResponseHeaders,FileLikeObject} from 'ng2-file-upload'; 

import { SpotCheck } from '../models/SpotCheckFields'; 

@Component ({ 
    selector: 'my-app', 
    templateUrl:'./excelUpload.html', 
    providers:[UploadService] 
}) 

export class ExcelUploadComponent { 

    public SpotChecklist: SpotCheck[]; 
    public project_master:any[]; 

    uploader:FileUploader; 

    constructor(private uploadservice: UploadService){ 
     this.SpotChecklist=[]; 
     this.project_master=[]; 
    } 
    ngOnInit(): void { 
     this.uploader = new FileUploader({ 
      url: 'http://localhost:5000/upload' 
      // headers: [{name:'Accept', value:'application/json'}], 
      // autoUpload: true, 
     }); 
     this.uploader.onErrorItem = (item, response, status, headers) => this.onErrorItem(item, response, status, headers); 
     this.uploader.onSuccessItem = (item, response, status, headers) => this.onSuccessItem(item, response, status, headers); 

     //retieve projectmaster details 
     this.getProjectMaster("","SELECT PROJECT MASTER"); 
    } 

    onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any { 
     //console.log("onSuccessItem " + status, response, item); 
     this.SpotChecklist = JSON.parse(response); //success server response 

     var data = this.validateRow(this.SpotChecklist); 

     console.log(data); 
    } 

    onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any { 
     let error = JSON.parse(response); //error server response 
    } 

    validateRow(lst:any[]) : SpotCheck[] 
    { 
     var i:number; 
     for(i=0;i<lst.length ;i++) 
     { 
      var validation_message:string=""; 
      var blnErrOccured:boolean=false; 

      if(!this.isEmail(lst[i].RESPONSIBLE_PERSON_EMAIL_ID)) 
      { 
       validation_message=validation_message+ "," +"RESPONSIBLE_PERSON_EMAIL_ID is invalid" 
       blnErrOccured=true; 
      } 

      lst[i].VALIDATION_RESULT=validation_message; 
     } 
     return lst; 
    } 

    isDate(date:string) { 
     // return (new Date(date) !== "Invalid Date") && !isNaN(new Date(date)); 
    } 

    isEmail(search:string):boolean 
    { 
     var serchfind:boolean; 

     regexp = new RegExp('/^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/'); 

     serchfind = regexp.test(search); 

     console.log(serchfind) 
     return serchfind 
    } 

    getProjectMaster(project_code:string,Flag:string):any 
    { 
     this.uploadservice.getProjectMaster(project_code,Flag).subscribe(
      response=> { 
       this.project_master= response[0]; 
       return response; 
      }, 
      error=> { 
       console.log("ERROR: ",error); 
       console.log(error.json()); //gives the object object 
      }, 
      () => { 
       console.log("Completed"); 
      } 
     ); 
    } 
} 
+0

其實我從上面的鏈接自己複製代碼。 – user3301440

+0

你的代碼的輸出是什麼。它是否驗證不正確?或者根本不驗證?控制檯中有任何錯誤? – prabushitha

+0

沒有錯誤!它只是返回false爲正確的電子郵件地址也 – user3301440

回答

3

問題是給定的正則表達式的格式。給它沒有報價(')像這樣

regexp = new RegExp(/^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/); 
+0

是的..工作......謝謝 – user3301440

+0

可能不適用於英文以外的東西。將張貼我使​​用的東西。 –

相關問題