2
* Copyright (C) 2002-2006 Les Hazlewood
4
* This library is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU Lesser General Public License as published
6
* by the Free Software Foundation; either version 2.1 of the License, or
7
* (at your option) any later version.
9
* This library is distributed in the hope that it will be useful, but
10
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
12
* Public License for more details.
14
* You should have received a copy of the GNU Lesser General Public License
15
* along with this library; if not, write to the
17
* Free Software Foundation, Inc.
18
* 59 Temple Place, Suite 330
19
* Boston, MA 02111-1307
22
* Or, you may view it online at
23
* http://www.opensource.org/licenses/lgpl-license.php
26
package org.netbeans.modules.mercurial;
28
import java.util.regex.Pattern;
32
/* Validation of email address from www.leshazlewood.com */
34
//RFC 2822 token definitions for valid email - only used together to form a java Pattern object:
35
private static final String sp = "\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~"; // NOI18N
36
private static final String atext = "[a-zA-Z0-9" + sp + "]"; // NOI18N
37
private static final String atom = atext + "+"; // NOI18N //one or more atext chars
38
private static final String dotAtom = "\\." + atom; // NOI18N
39
private static final String localPart = atom + "(" + dotAtom + ")*"; // NOI18N //one atom followed by 0 or more dotAtoms.
41
//RFC 1035 tokens for domain names:
42
private static final String letter = "[a-zA-Z]"; // NOI18N
43
private static final String letDig = "[a-zA-Z0-9]"; // NOI18N
44
private static final String letDigHyp = "[a-zA-Z0-9-]"; // NOI18N
45
public static final String rfcLabel = letDig + letDigHyp + "{0,61}" + letDig; // NOI18N
46
private static final String domain = rfcLabel + "(\\." + rfcLabel + ")*\\." + letter + "{2,6}"; // NOI18N
48
//Combined together, these form the allowed email regexp allowed by RFC 2822:
49
private static final String addrSpec = "^" + localPart + "@" + domain + "$"; // NOI18N
53
public static final Pattern VALID_PATTERN = Pattern.compile( addrSpec );
55
public static Boolean isUserNameValid(String name) {
57
* Names of the form username@domain
58
* and text <username@domain> are allowed
61
if (name.endsWith(">")) { // NOI18N
62
int startbr = name.lastIndexOf("<"); // NOI18N
64
String newName = name.substring(startbr + 1, name.length() -1);
65
return VALID_PATTERN.matcher(newName).matches();
69
return VALID_PATTERN.matcher(name).matches();