2013-03-26 67 views
0

正则表达式是正确的,只是x1true,而它必须是true只有前x\\d,但在\\d无需'之前。我需要较小的字符串作为number'radius和最大width x height x depth ' radius无法完成正则表达式

checkField = "x1"; 
String r = "\\d{0,4}(x\\d{1,4}){0,2}('\\d{1,4})?"; 
Pattern p = Pattern.compile(r); 
Matcher m = p.matcher(checkField); 
String a = String.valueOf(m.matches()); 
if (m.matches()) { 
    infoBox(checkField, a); 
} else { 
    errorBox(checkField, a); 
} 

回答

1

我认为这应该工作:

"^(\\d{1,4}(x\\d{1,4}){0,2})?('\\d{1,4})?$" 

表达接受的形式AxBxC的(可选)字符串(与1,2或3坐标),然后跟随一个形式为'D'的可选字符串。

由于两个字符串都是可选的,所以您还应该检查字符串是否为空。

+0

是的,但后来我无法键入''1',因为在'''我需要数字之前! – 2013-03-26 09:56:52

+1

我认为你应该给出一个更完整的解释你想达到的目的,否则我可以纠正这个匹配也是'1,但我认为这是不够的。 – Teudimundo 2013-03-26 09:59:49

+0

我需要我可以放置1个或所有尺寸的项目 - 宽度,高度,深度和半径... 但项目只能与宽度和高度('1x1')或只有深度('1')或只有半径(''1'),所以次要的字符串必须是数字或半径最大的宽度x高度x深度半径 – 2013-03-26 10:08:30