我有这种方法来检查字符串是否包含特殊字符,但我不希望它检查特定字符,例如(+
或-
)我该如何去关于这样做?
public boolean containsSpecialCharacters(String teamName) {
Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(teamName);
boolean b = m.find();
if (b) {
return true;
}
return false;
}
答案 0 :(得分:2)
你可以试试这个:
[^\w +-]
REGEX EXPLANATION
[^\w +-]
Match a single character NOT present in the list below «[^\w +-]»
A word character (letters, digits, and underscores) «\w»
The character “ ” « »
The character “+” «+»
The character “-” «-»
答案 1 :(得分:1)
您可以使用以下内容。只需在否定的字符类中添加这些字符。
在字符类[]
中,您可以将连字符(-
)作为第一个或最后一个字符。如果您将连字符放在任何其他位置,您需要将其转义(\-
)以便匹配。
Pattern p = Pattern.compile("(?i)[^a-z0-9 +-]");
正则表达式:
(?i) # set flags for this block (case-insensitive)
[^a-z0-9+-] # any character except: 'a' to 'z', '0' to '9', ' ', '+', '-'