我有一个格式为^%^%^%^%
的字符串。我需要检查字符串是否只有^%
例如
1. ^%^%^%^% > Valid
2. ^%^%aa^%^% > Invalid
3. ^%^%^%^%^%^% > Valid
4. ^%^%^^%^% > Invalid
5. %^%^%^%^% > Invalid
如何在Java中做到这一点?
我尝试过:
String text = "^%^%^%^%^%";
if (Pattern.matches(("[\\^\\%]+"), text)==true) {
System.out.println("Valid");
} else {
System.out.println("Invalid");
}
但是它给我提供了对情况4和5的有效性。
答案 0 :(得分:3)
在模式中,您使用的character class仅匹配列出的字符中的1个,然后重复1+次。
您可以使用该^
来锚定字符串的开头,并以$
结尾来声明字符串的结尾。
然后重复1次以上,匹配\\^%
^(?:\\^%)+$
答案 1 :(得分:2)
答案 2 :(得分:2)
您可以简单地做到:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfiguration(new ArticleConfiguration());
}
if (str.replace("^%", "").isEmpty()) {
…
}
方法会尽可能多地替换字符串,因此它完全适合您的需求。
它也匹配空字符串,根据规范,该字符串“除此模式外不包含其他任何内容”。在这种情况下,您应始终询问是否也应使用空字符串。
答案 3 :(得分:-1)
String[] text = {"^%^%^%^%","^%^%aa^%^%","^%^%^%^%^%^%","^%^%^^%^%","%^%^%^%^%" };
for (String t: text) {
if(Pattern.matches(("[\\^\\%]+[a-z]*[a-z]*[(\\^\\%)]+"), t)==true) {
System.out.println("Valid");
} else {
System.out.println("Invalid");
}
}