我正在尝试编写正则表达式来限制某些字符。要限制的字符取决于各种用户的要求。
我正在尝试使用此正则表达式 - [(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;
如何生成标准正则表达式?
答案 0 :(得分:1)
如果你想要“其中一个字符”,那么括号就足够了。不需要括号和管道。
这样的事情:[.:,]
和[.:&%]
可能会有效。如果想要他们一次或多次,则必须在正则表达式结束时+
(例如:[.:&%]+
)。
如评论中所述,要注意特殊字符(如点,这意味着正则表达式中的任何字符)。