All Downloads are FREE. Search and download functionalities are using the official Maven repository.

alpine.common.validation.RegexSequence Maven / Gradle / Ivy

The newest version!
/*
 * This file is part of Alpine.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * SPDX-License-Identifier: Apache-2.0
 * Copyright (c) Steve Springett. All Rights Reserved.
 */
package alpine.common.validation;

/**
 * RegexSequence contains a library of commonly used regular expressions
 * used to validate untrusted input.
 *
 * @author Steve Springett
 * @since 1.0.0
 */
public class RegexSequence {

    /**
     * Private constructor
     */
    private RegexSequence() { }

    public static class Definition {
        public static final String BOOLEAN = "^(true|false|yes|no|on|off|enabled|disabled|1|0)$";
        public static final String BOOLEAN_TRUE = "^(true|yes|on|enabled|1)$";
        public static final String BOOLEAN_FALSE = "^(false|no|off|disabled|0)$";

        public static final String HTTP_SCHEME = "^(http|https)$";
        public static final String HTTP_SERVER_NAME = "^[a-zA-Z0-9_.\\-]*$";
        public static final String HTTP_SERVLET_PATH = "^[a-zA-Z0-9.\\-\\/_]*$";
        public static final String HTTP_CHAR_ENCODING = "^[A-Za-z0-9_-]*$";
        public static final String HTTP_PARAMETER_NAME = "^[\\w]{1,32}$";
        public static final String HTTP_PARAMETER_VALUE = "^[\\w.\\-\\/+=@ ]*$";
        public static final String HTTP_COOKIE_NAME = "^[a-zA-Z0-9\\-_]{1,32}$";
        public static final String HTTP_COOKIE_VALUE = "^[a-zA-Z0-9\\-\\/+=_ ]*$";
        public static final String HTTP_HEADER_NAME = "^[a-zA-Z0-9\\-_]{1,32}$";
        public static final String HTTP_HEADER_VALUE = "^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ ]*$";
        public static final String HTTP_CONTEXT_PATH = "^\\/?[a-zA-Z0-9.\\-\\/_]*$";
        public static final String HTTP_PATH = "^[a-zA-Z0-9.\\-_]*$";
        public static final String HTTP_QUERY_STRING = "^[\\w()\\-=\\*\\.\\?;,+\\/:& %]*$";
        public static final String HTTP_URI = "^[\\w()\\-=\\*\\.\\?;,+\\/:&@ ]*$";
        public static final String HTTP_URL = "^.*$";
        public static final String HTTP_JSESSION_ID = "^[A-Z0-9]{10,128}$";

        public static final String FS_FILE_NAME = "^[\\p{Alnum}!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$";
        public static final String FS_DIRECTORY_NAME = "^[\\p{Alnum}:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$";

        public static final String ALPHA = "^\\p{Alpha}*$";
        public static final String ALPHA_LOWERCASE = "^\\p{Lower}*$";
        public static final String ALPHA_UPPERCASE = "^\\p{Upper}*$";
        public static final String NUMERIC = "^[-+]?\\p{Digit}*\\.?\\p{Digit}+([eE][-+]?\\p{Digit}+)?$";
        public static final String ALPHA_NUMERIC = "^\\p{Alnum}*$";
        public static final String WORD_CHARS = "^[a-zA-Z_0-9]*$";
        public static final String PRINTABLE_CHARS = "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$";
        public static final String PRINTABLE_CHARS_PLUS = "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$";
        public static final String NOT_CONTROL_CHARS = "^[^\\x00-\\x1F\\x7F]*$";

        public static final String HEXADECIMAL = "^[A-Fa-f0-9]*$";
        public static final String BINARY = "^[0-1]*$";
        public static final String UUID = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";
        public static final String STRING_IDENTIFIER = "^[a-zA-Z0-9_.\\-+]*$";

        public static final String HASH_MD5 = "^[0-9a-f]{32}$";
        public static final String HASH_SHA1 = "^[0-9a-f]{40}$";
        public static final String HASH_SHA256 = "^[0-9a-f]{64}$";
        public static final String HASH_SHA384 = "^[0-9a-f]{96}$";
        public static final String HASH_SHA512 = "^[0-9a-f]{128}$";
        public static final String HASH_MD5_SHA1 = "^([0-9a-f]{32}|[0-9a-f]{40})$";
        public static final String HASH_MD5_SHA1_SHA256_SHA384_SHA512 = "^([0-9a-f]{32}|[0-9a-f]{40}|[0-9a-f]{64}|[0-9a-f]{96}|[0-9a-f]{128})$";

        public static final String SAFESTRING = "^[\\p{L}\\p{N}.]{0,1024}$";
        public static final String HTML_HEX_CODE = "^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$";
        public static final String EMAIL_ADDRESS = "^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$";
        public static final String IPV4_ADDRESS = "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
        public static final String MAC_ADDRESS = "^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$";
        public static final String RFC_1918_NON_ROUTABLE_IP = "^(((25[0-5]|2[0-4][0-9]|19[0-1]|19[3-9]|18[0-9]|17[0-1]|17[3-9]|1[0-6][0-9]|1[1-9]|[2-9][0-9]|[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|(192\\.(25[0-5]|2[0-4][0-9]|16[0-7]|169|1[0-5][0-9]|1[7-9][0-9]|[1-9][0-9]|[0-9]))|(172\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|1[0-5]|3[2-9]|[4-9][0-9]|[0-9])))\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$";
        public static final String URL = "^((((https?|ftps?|sftp|imap|rtsp|rtmp|sip|sips|git|ssh|telnet|nntp|file)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,][[:blank:]])?$";
        public static final String SOCIAL_SECURITY_NUMBER = "^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$";
        public static final String CREDIT_CARD_VISA = "^4[0-9]{12}(?:[0-9]{3})?$";
        public static final String CREDIT_CARD_MASTERCARD = "^5[1-5][0-9]{14}$";
        public static final String CREDIT_CARD_AMEX = "^3[47][0-9]{13}$";
        public static final String CREDIT_CARD_DINERSCLUB = "^3(?:0[0-5]|[68][0-9])[0-9]{11}$";
        public static final String CREDIT_CARD_DISCOVER = "^6(?:011|5[0-9]{2})[0-9]{12}$";
        public static final String CREDIT_CARD_JCB = "^(?:2131|1800|35\\d{3})\\d{11}$";
    }

    public static class Pattern {
        public static final java.util.regex.Pattern BOOLEAN = java.util.regex.Pattern.compile(RegexSequence.Definition.BOOLEAN, java.util.regex.Pattern.CASE_INSENSITIVE);
        public static final java.util.regex.Pattern BOOLEAN_TRUE = java.util.regex.Pattern.compile(RegexSequence.Definition.BOOLEAN_TRUE, java.util.regex.Pattern.CASE_INSENSITIVE);
        public static final java.util.regex.Pattern BOOLEAN_FALSE = java.util.regex.Pattern.compile(RegexSequence.Definition.BOOLEAN_FALSE, java.util.regex.Pattern.CASE_INSENSITIVE);

        public static final java.util.regex.Pattern HTTP_SCHEME = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_SCHEME);
        public static final java.util.regex.Pattern HTTP_SERVER_NAME = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_SERVER_NAME);
        public static final java.util.regex.Pattern HTTP_SERVLET_PATH = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_SERVLET_PATH);
        public static final java.util.regex.Pattern HTTP_CHAR_ENCODING = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_CHAR_ENCODING);
        public static final java.util.regex.Pattern HTTP_PARAMETER_NAME = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_PARAMETER_NAME, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern HTTP_PARAMETER_VALUE = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_PARAMETER_VALUE, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern HTTP_COOKIE_NAME = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_COOKIE_NAME);
        public static final java.util.regex.Pattern HTTP_COOKIE_VALUE = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_COOKIE_VALUE);
        public static final java.util.regex.Pattern HTTP_HEADER_NAME = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_HEADER_NAME);
        public static final java.util.regex.Pattern HTTP_HEADER_VALUE = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_HEADER_VALUE);
        public static final java.util.regex.Pattern HTTP_CONTEXT_PATH = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_CONTEXT_PATH);
        public static final java.util.regex.Pattern HTTP_PATH = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_PATH);
        public static final java.util.regex.Pattern HTTP_QUERY_STRING = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_QUERY_STRING, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern HTTP_URI = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_URI, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern HTTP_URL = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_URL);
        public static final java.util.regex.Pattern HTTP_JSESSION_ID = java.util.regex.Pattern.compile(RegexSequence.Definition.HTTP_JSESSION_ID);

        public static final java.util.regex.Pattern FS_FILE_NAME = java.util.regex.Pattern.compile(RegexSequence.Definition.FS_FILE_NAME, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern FS_DIRECTORY_NAME = java.util.regex.Pattern.compile(RegexSequence.Definition.FS_DIRECTORY_NAME, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);

        public static final java.util.regex.Pattern ALPHA = java.util.regex.Pattern.compile(RegexSequence.Definition.ALPHA, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern ALPHA_LOWERCASE = java.util.regex.Pattern.compile(RegexSequence.Definition.ALPHA_LOWERCASE, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern ALPHA_UPPERCASE = java.util.regex.Pattern.compile(RegexSequence.Definition.ALPHA_UPPERCASE, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern NUMERIC = java.util.regex.Pattern.compile(RegexSequence.Definition.NUMERIC);
        public static final java.util.regex.Pattern ALPHA_NUMERIC = java.util.regex.Pattern.compile(RegexSequence.Definition.ALPHA_NUMERIC, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern WORD_CHARS = java.util.regex.Pattern.compile(RegexSequence.Definition.WORD_CHARS, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern PRINTABLE_CHARS = java.util.regex.Pattern.compile(RegexSequence.Definition.PRINTABLE_CHARS, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern PRINTABLE_CHARS_PLUS = java.util.regex.Pattern.compile(RegexSequence.Definition.PRINTABLE_CHARS_PLUS, java.util.regex.Pattern.UNICODE_CHARACTER_CLASS);
        public static final java.util.regex.Pattern NOT_CONTROL_CHARS = java.util.regex.Pattern.compile(Definition.NOT_CONTROL_CHARS);
        public static final java.util.regex.Pattern HEXADECIMAL = java.util.regex.Pattern.compile(RegexSequence.Definition.HEXADECIMAL);
        public static final java.util.regex.Pattern BINARY = java.util.regex.Pattern.compile(RegexSequence.Definition.BINARY);
        public static final java.util.regex.Pattern UUID = java.util.regex.Pattern.compile(RegexSequence.Definition.UUID);
        public static final java.util.regex.Pattern STRING_IDENTIFIER = java.util.regex.Pattern.compile(RegexSequence.Definition.STRING_IDENTIFIER);

        public static final java.util.regex.Pattern HASH_MD5 = java.util.regex.Pattern.compile(RegexSequence.Definition.HASH_MD5);
        public static final java.util.regex.Pattern HASH_SHA1 = java.util.regex.Pattern.compile(RegexSequence.Definition.HASH_SHA1);
        public static final java.util.regex.Pattern HASH_SHA256 = java.util.regex.Pattern.compile(RegexSequence.Definition.HASH_SHA256);
        public static final java.util.regex.Pattern HASH_SHA384 = java.util.regex.Pattern.compile(RegexSequence.Definition.HASH_SHA384);
        public static final java.util.regex.Pattern HASH_SHA512 = java.util.regex.Pattern.compile(RegexSequence.Definition.HASH_SHA512);
        public static final java.util.regex.Pattern HASH_MD5_SHA1 = java.util.regex.Pattern.compile(RegexSequence.Definition.HASH_MD5_SHA1);
        public static final java.util.regex.Pattern HASH_MD5_SHA1_SHA256_SHA512 = java.util.regex.Pattern.compile(RegexSequence.Definition.HASH_MD5_SHA1_SHA256_SHA384_SHA512);

        public static final java.util.regex.Pattern SAFESTRING = java.util.regex.Pattern.compile(RegexSequence.Definition.SAFESTRING);
        public static final java.util.regex.Pattern HTML_HEX_CODE = java.util.regex.Pattern.compile(RegexSequence.Definition.HTML_HEX_CODE);
        public static final java.util.regex.Pattern EMAIL_ADDRESS = java.util.regex.Pattern.compile(RegexSequence.Definition.EMAIL_ADDRESS);
        public static final java.util.regex.Pattern IPV4_ADDRESS = java.util.regex.Pattern.compile(RegexSequence.Definition.IPV4_ADDRESS);
        public static final java.util.regex.Pattern MAC_ADDRESS = java.util.regex.Pattern.compile(RegexSequence.Definition.MAC_ADDRESS);
        public static final java.util.regex.Pattern RFC_1918_NON_ROUTABLE_IP = java.util.regex.Pattern.compile(RegexSequence.Definition.RFC_1918_NON_ROUTABLE_IP);
        public static final java.util.regex.Pattern URL = java.util.regex.Pattern.compile(RegexSequence.Definition.URL);
        public static final java.util.regex.Pattern SOCIAL_SECURITY_NUMBER = java.util.regex.Pattern.compile(RegexSequence.Definition.SOCIAL_SECURITY_NUMBER);
        public static final java.util.regex.Pattern CREDIT_CARD_VISA = java.util.regex.Pattern.compile(RegexSequence.Definition.CREDIT_CARD_VISA);
        public static final java.util.regex.Pattern CREDIT_CARD_MASTERCARD = java.util.regex.Pattern.compile(RegexSequence.Definition.CREDIT_CARD_MASTERCARD);
        public static final java.util.regex.Pattern CREDIT_CARD_AMEX = java.util.regex.Pattern.compile(RegexSequence.Definition.CREDIT_CARD_AMEX);
        public static final java.util.regex.Pattern CREDIT_CARD_DINERSCLUB = java.util.regex.Pattern.compile(RegexSequence.Definition.CREDIT_CARD_DINERSCLUB);
        public static final java.util.regex.Pattern CREDIT_CARD_DISCOVER = java.util.regex.Pattern.compile(RegexSequence.Definition.CREDIT_CARD_DISCOVER);
        public static final java.util.regex.Pattern CREDIT_CARD_JCB = java.util.regex.Pattern.compile(RegexSequence.Definition.CREDIT_CARD_JCB);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy