我不清楚为什么会抛出FormatException:
void main(){
RegExp cssColorMatch = new RegExp(r'^#([0-9a-fA-F]{3}{1,2}$)');
print(cssColorMatch.hasMatch('#F56'));
}
答案 0 :(得分:3)
您正在尝试背靠背指定多个 范围量词,这会导致异常错误。如果要以这种方式使用捕获组,则需要围绕第一个范围量词结束捕获组,并将以下范围量词放在捕获组之外。
RegExp re = new RegExp(r"#([0-9a-fA-F]{3}){1,2}");
由于您使用的是hasMatch,因此您可以删除开始^
和结束$
锚点,因为如果正则表达式在字符串输入中匹配并且您真的不喜欢,则此函数会返回这里也需要{1,2}
。
RegExp re = new RegExp(r"#([0-9a-fA-F]{3})");
答案 1 :(得分:2)
你不能{3}{1,2}
。但你可以这样做:
RegExp cssColorMatch = new RegExp(r'^\#((?:[0-9a-fA-F]{3}){1,2})$');
仍然无法正确匹配十六进制颜色。
答案 2 :(得分:0)
因为你的正则表达式最后包含{1,2}
。没有必要包括这部分。
在正则表达式下就足够了,
RegExp cssColorMatch = new RegExp(r'^#([0-9a-fA-F]{3})$');