我需要使用typescript应用程序验证Excel文件中的邮箱和日期字段.

我试图使用正则表达式进行验证,但对于正确的邮箱地址,结果总是返回false.

有人能帮我确认邮件和日期吗?

下面是我写的代码

Component:

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);

        // retrieve 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('/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[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");
            }
        );
    }
}

推荐答案

问题在于给定的正则表达式格式.不加引号(')这样写

regexp = new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[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,}))$/);

Typescript相关问答推荐

如何将函数类型应用到生成器?

如何使用另一个类型的属性中的类型

根据另一个成员推断类成员的类型

有没有办法适当缩小类型?

动态判断TypScript对象是否具有不带自定义类型保护的键

如何推断哪个特定密钥与泛型匹配?

单击并移除for循环中的一项也会影响另一项

如何缩小变量访问的对象属性范围?

有没有办法解决相互影响的路由之间的合并?

在不更改类型签名的情况下在数组并集上映射文字

TypeScrip 5.3和5.4-对`Readonly<;[...number[],字符串]>;`的测试版处理:有什么变化?

嵌套对象的类型

Angular文件上传到Spring Boot失败,多部分边界拒绝

重载函数的T helper参数

是否可以通过映射类型将函数参数约束为预定义类型?

如何使用泛型函数参数定义类型脚本函数

在Google授权后由客户端接收令牌

使用NextJS中间件重定向,特定页面除外

如何创建允许使用带有联合类型参数的Array.from()的TS函数?

将带有额外id属性的Rust struct 展平回TypeScript单个对象,以返回wasm-bindgen函数