正则表达式要求在字符串中只使用@符号一次

时间:2017-09-05 11:44:56

标签: javascript regex

我是javaScript的新手,我遇到的问题是我必须匹配@符号并确保它只允许在字符串中使用一次。为此,我写了以下正则表达式。

var regexpat=/[@]{1}/;
    if(regexpat.test(valu))
       testresults = true;
       else 
      {
            alert("Please input a valid email address!");
            testresults = false;
      }

我的正则表达式适用于以下输入值:abcd@abc@abc.com。但是,如果我将输入值提供为"abcd@"@abc.com,则不会抛出警报错误消息。

如何更改我的正则表达式以便它适用于"abcd@"@abc.com

3 个答案:

答案 0 :(得分:2)

你的正则表达式只测试字符串中是否有一个@,它不会拒绝多个var regexppat = /^[^@]+@[^@]+$/; 。使用:

@

这匹配@var valu; var regexpat = /^[^@]+@[^@]+$/; while (valu = prompt("Enter email")) { if (regexpat.test(valu)) console.log(valu + " is valid"); else { console.log(valu + " is invalid"); } }字符包围的akka-http



  val route = get {
    pathPrefix("compass") {
      path("route") {
        parameters(('srclat.as[Double], 'srclon.as[Double], 
          'destlat.as[Double], 'destlon.as[Double])) {
            (srclat, srclon, destlat, destlon) =>
              complete(getRoute((LatLong(srclat, srclon), 
                LatLong(destlat, destlon))))
        }
      }
    }
 }




答案 1 :(得分:0)

简单的方法也可以是使用split("@")

var value = 'abcd@@';
 if(value.split("@").length === 2){
  testresults = true;
 }else{
   alert("Please input a valid email address!");
   testresults = false;
 }     
      

只需将您的字符串与@分开,因为您只需要出现一次@,所以必须有一个长度为2的数组,以便您可以将数组与长度2进行比较。如果数组长度更长如果不是2,则@

出现多次

答案 2 :(得分:0)

电子邮件正则表达式不仅仅是一个@字符的出现。这是W3C Spec中指定的电子邮件正则表达式(例如,用于<input type="email">):

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/