github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/Unknwon/com/regex.go (about)

     1  // Copyright 2013 com authors
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License"): you may
     4  // not use this file except in compliance with the License. You may obtain
     5  // a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    11  // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    12  // License for the specific language governing permissions and limitations
    13  // under the License.
    14  
    15  package com
    16  
    17  import "regexp"
    18  
    19  const (
    20  	regex_email_pattern        = `(?i)[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}`
    21  	regex_strict_email_pattern = `(?i)[A-Z0-9!#$%&'*+/=?^_{|}~-]+` +
    22  		`(?:\.[A-Z0-9!#$%&'*+/=?^_{|}~-]+)*` +
    23  		`@(?:[A-Z0-9](?:[A-Z0-9-]*[A-Z0-9])?\.)+` +
    24  		`[A-Z0-9](?:[A-Z0-9-]*[A-Z0-9])?`
    25  	regex_url_pattern = `(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?`
    26  )
    27  
    28  var (
    29  	regex_email        *regexp.Regexp
    30  	regex_strict_email *regexp.Regexp
    31  	regex_url          *regexp.Regexp
    32  )
    33  
    34  func init() {
    35  	regex_email = regexp.MustCompile(regex_email_pattern)
    36  	regex_strict_email = regexp.MustCompile(regex_strict_email_pattern)
    37  	regex_url = regexp.MustCompile(regex_url_pattern)
    38  }
    39  
    40  // validate string is an email address, if not return false
    41  // basically validation can match 99% cases
    42  func IsEmail(email string) bool {
    43  	return regex_email.MatchString(email)
    44  }
    45  
    46  // validate string is an email address, if not return false
    47  // this validation omits RFC 2822
    48  func IsEmailRFC(email string) bool {
    49  	return regex_strict_email.MatchString(email)
    50  }
    51  
    52  // validate string is a url link, if not return false
    53  // simple validation can match 99% cases
    54  func IsUrl(url string) bool {
    55  	return regex_url.MatchString(url)
    56  }