用于验证输入的模式匹配

时间:2014-10-08 07:40:55

标签: java regex pattern-matching

我必须将输入验证为

  • 允许在2-5位置使用星号。
  • 位置一应该是字母(除了〜) - 不应该接受数字。
  • 除上述例外情况外,不允许使用特殊字符

我正在努力建立这个。

final Pattern pattern =
            Pattern.compile("^[a-zA-Z~][a-zA-Z*]*$", Pattern.CASE_INSENSITIVE);

final Matcher matcher = pattern.matcher(this.mainStaOrgBO.getStaOrgCode());
        final boolean specialCharCheck = matcher.find();
        if (specialCharCheck) {
}

2 个答案:

答案 0 :(得分:1)

怎么样:

^[a-zA-Z~][a-zA-Z*]{1,4}[a-zA-Z]*$

<强>解释

^                   : start of string
    [a-zA-Z~]       : First char can be letter or ~
    [a-zA-Z*]{1,4}  : char 2 to 5 can be letter or *
    [a-zA-Z]*       : rest of string only letter
$                   : end of string.

答案 1 :(得分:-1)

这应该有效

[a-zA-Z~]\*[a-zA-Z~]{2}\*[a-zA-Z~]*

如果*是可选的

[a-zA-Z~][a-zA-Z~\*][a-zA-Z~]{2}[a-zA-Z~\*][a-zA-Z~]*

测试在这里Online Java Regex Test