1 /*** 2 * Copyright (C) 2006 Philipp Mpalampanis 3 * 4 * License: MPL 1.1/GPL 2.0/LGPL 2.1 5 * 6 * The contents of this file are subject to the Mozilla Public License Version 7 * 1.1 (the "License"); you may not use this file except in compliance with 8 * the License. You may obtain a copy of the License at 9 * http://www.mozilla.org/MPL/ 10 * 11 * Software distributed under the License is distributed on an "AS IS" basis, 12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 13 * for the specific language governing rights and limitations under the 14 * License. 15 * 16 * Alternatively, the contents of this file may be used under the terms of 17 * either the GNU General Public License Version 2 or later (the "GPL"), or 18 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 19 * in which case the provisions of the GPL or the LGPL are applicable instead 20 * of those above. If you wish to allow use of your version of this file only 21 * under the terms of either the GPL or the LGPL, and not to allow others to 22 * use your version of this file under the terms of the MPL, indicate your 23 * decision by deleting the provisions above and replace them with the notice 24 * and other provisions required by the GPL or the LGPL. If you do not delete 25 * the provisions above, a recipient may use your version of this file under 26 * the terms of any one of the MPL, the GPL or the LGPL. 27 */ 28 29 package net.sf.echobinding.validation; 30 31 import java.util.regex.Pattern; 32 33 34 /*** 35 * A validator the uses a regular expression to validate user input. 36 * 37 */ 38 public class RegexValidator implements Validator { 39 40 private Pattern _pattern; 41 private String _regex; 42 43 /*** 44 * Constructs the regular expression validator. 45 * 46 * @param regex - the regular expression to use 47 */ 48 public RegexValidator(String regex) { 49 _pattern = Pattern.compile(regex); 50 _regex = regex; 51 } 52 53 /*** 54 * Checks if the input string matches the regular expression. 55 * 56 * @param input - the user input 57 */ 58 public ValidationReport validate(Object bean, Object input) { 59 if(input == null) 60 return new ValidationReport(true, null); 61 62 boolean matches = _pattern.matcher(input.toString()).matches(); 63 64 String message = null; 65 if(!matches) 66 message = "input must match pattern '"+_regex+"'"; 67 68 return new ValidationReport(matches, message); 69 } 70 71 }