我想进行字符串验证

时间:2019-07-16 17:37:41

标签: javascript

我们需要将以下字符串视为用例,首先我要拆分      按“,”,然后按“ @”

如果所有域都相同(全部为gmail或全部为yahoo),则按@分隔后,其有效    否则无效。

请帮助我处理拆分部分。

String input1 = example@gmail.com , example1@gmail.com; 
String input2 = example@yahoo.com , example1@gmail.com;


    String input 1 == valid.
    String input 2 == Invalid.

3 个答案:

答案 0 :(得分:1)

这是一个简单的示例,您可以使用[0]和[1]从拆分中访问数组。


var input = 'example@gmail.com , example1@ymail.com, example1@yahoo.com';
input.split(',').forEach(email => {
  const domain = email.split('@')[1].trim();
  if (domain === 'gmail.com' || domain === 'yahoo.com') {
    console.log("Email address " + email + " is valid.");
  } else {
    console.log("Email address " + email + " is not valid.");
  }
})

答案 1 :(得分:1)

使用功能

isValid = (emails)=>{
    let list = emails.split(','), isValid = true

    list.forEach((email)=>{
        if(!email.includes('@gmail.com')){

          isValid = false
        }
    })

    return isValid
}

isValid(' example@gmail.com , example1@hotmail.com;')

由分割 然后检查每封电子邮件,其中包含 您可以添加secound参数来检查电子邮件类型并使其更加通用

isValid = (emails, validEmail)=>{
    let list = emails.split(','), isValid = true

    list.forEach((email)=>{
        if(!email.includes(validEmail)){

          isValid = false
        }
    })

    return isValid
}

isValid(' example@gmail.com , example1@hotmail.com', '@gmail.com')

答案 2 :(得分:0)

您可以提取域,然后将它们添加到Set中,并通过检查Set的大小来查看它们是否唯一。

一个额外的好处是,不管字符串中的电子邮件数量如何,它都可以工作。

const input1 = 'example@gmail.com , example1@gmail.com';
const input2 = 'example@yahoo.com , example1@gmail.com';

function validInput(input) {
  const domains = input.split(',').map(email => email.trim().split('@')[1])

  return new Set(domains).size === 1;
}

console.log('is input1 valid ?',validInput(input1));
console.log('is input2 valid ?',validInput(input2));