求大神帮忙给个正则表达式,java的,怎么写idea都字符串报错,木有办法
首先,正则的思路应该是我支持什么样的格式。根据问题,假设是支持字母(不限大小写)、数字、以及符号-#
那么正则表达式是:[A-Za-z0-9-#]{1,64},如果要支持更多的字符,请在#后面添加即可
Java代码示例:
import java.util.regex.*;
boolean foundMatch = false;
try {
Pattern regex = Pattern.compile("[A-Za-z0-9-#]{1,64}");
Matcher regexMatcher = regex.matcher(subjectString);
foundMatch = regexMatcher.find();
} catch (PatternSyntaxException ex) {
// 异常处理
晕,这个编辑器把第一行吃了,发布出来。
[^这个后面写你那些符号,每个前面加上一个\]{1,64}
如果所有符号都不允许,或者只允许-_,可以用
\w{1,64}
或者[a-zA-Z0-9\-_]{1,64}
你可以参考一下这段代码,你可以测试一下。应该是没有问题的。
import java.util.regex.Pattern;
public class RegularTest {
public static void main(String[] args) {
String username="abc_-235bv";
String reg = "[A-Za-z0-9-#_\\-]{1,64}";
System.out.println(Pattern.matches(reg,username));
if (Pattern.matches(reg,username))
System.out.println("符合规则");
else
System.out.println("不符合规则");
}
}
匹配你的需求应该是没有问题的,你看看吧。
感谢各位大佬,不过符号那么多,我如果想按照需求,只是禁用那几个,但我每次拼接到"\"就会开始报字符串错误了,为什么。各位大佬有时间可以帮我拼接下吗
感谢各位,我找到原因了,是因为java的转义加上正则的转义,"\\"才是表示一个"\"