正则表达式限制一些特殊字符

时间:2016-02-16 10:30:16

标签: java regex

我正在尝试编写正则表达式来限制某些字符。要限制的字符取决于各种用户的要求。

我正在尝试使用此正则表达式 - [(char1|char2|char3|...)$] 注意:每个字符都来自要求。

如果用户输入字符串匹配任何字符,我将返回true。现在, 我想知道的是天气这个表达式适用于所有条件吗?

例如 - requirement1 = .:, requirement2 = .:&%

我将在每个char之间汇总|,然后我将在java中生成正则表达式。这适用于我的要求1,但不适用于要求2。

我的示例java代码

String requirement = ":>&%";
String regExp1 = null;
for (int i = 0; i < requirement.length(); i++) {
    regExp1 = "[(" + requirement.charAt(i);
    if (i - 1 != requirement.length()) {
        regExp1.concat("|");
    }
}
if (regExp1 != null) {
    regExp1.concat(")]$");
}
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(arg);
if (m.find())
    return true;
else
    return false;

如何生成标准正则表达式?

1 个答案:

答案 0 :(得分:1)

如果你想要“其中一个字符”,那么括号就足够了。不需要括号和管道。

这样的事情:[.:,][.:&%]可能会有效。如果想要他们一次或多次,则必须在正则表达式结束时+(例如:[.:&%]+)。

如评论中所述,要注意特殊字符(如点,这意味着正则表达式中的任何字符)。