我有一个字符串,其中只有数字和无,一个或多个百分比是允许的
所以我的正则表达式是:[\d+%]
,你可以测试它here
对于java我必须转换它,
public static final String regex = "[\\d+\\%]";
并测试它我使用此功能
public static final String regex = "[\\d+\\%]";
public boolean validate(String myString){
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(myString);
if (!matcher.matches()) {
return false;
}else{
return true;
}
}
正则表达式不起作用,如果我使用
public static final String regex = "[\\d+%]";
是否有任何好的在线工具可以转义java的长正则表达式?
更高级的问题:
如果字符串中至少有一位数字,则只允许%,不应该只允许%!并且:只有当位数正好为8而不是更少时才允许没有%
的数字(意味着:1234567是坏的,但12345678是好的)
测试用例:
%
,
(空字符串),23b
,-1
,7.5
,{{1} },%5a
,1
1234567
,12345678
,23%
,1%53%53
答案 0 :(得分:4)
我有一个字符串,其中只有数字和无,一个或多个百分比是允许的,所以我的正则表达式是:
[\d+%]
实际上,匹配一个字符,可能是一个数字,+
或%
。
要匹配您在文字中描述的内容,您需要这样的内容:
[\d%]*\d[\d%]*
匹配包含至少一个数字和可选百分号的字符串。请注意,%
字符不是元字符,因此不需要在正则表达式中进行转义。它将匹配以下所有内容:
0
00
%0
0%0
00%
0%0%0
0%%0
等等,但不只是%
或包含除数字或%
字符以外的字符的任何字符串。
是否有任何好的在线工具可以转义java的长正则表达式?
我不知道一个。但逃避并不是你的正则表达不起作用的原因。
一个更高级的问题:只有在字符串中至少有一位数字时才允许%,不应该只允许%!
我认为上面的正则表达式就是这样。而对于记录,这就是Java String文字的样子:
"[\\d%]*\\d[\\d%]*"
除非您在正则表达式中包含TAB,NL,CR等字符,否则只需将每个\
替换为\\
即可。