我经常搜索一些对我有用的正则表达式或模式,但我还没找到。
在编辑文本中,我想允许前4个数字,然后是2个大写字母,所以我创建了一个模式:
private final Pattern sPattern = Pattern.compile("^[0-9]{0,4}[A-Z]{0,2}");
但它也允许前2个大写字母。
如果我将模式更改为
private final Pattern sPattern = Pattern.compile("^[0-9]{0,4}[A-Z]{4,6}");
我无法得到任何好的东西。
请帮助我。
感谢。
答案 0 :(得分:1)
你需要小心限制量词。只需删除0,
,因为它允许少于4位或2个大写字母:
^[0-9]{4}[A-Z]{2}
这将需要开头4位数字和后面2位数字。
请参阅demo
对于实时验证,您可以使用
^[0-9]{0,4}(?:(?<=[0-9]{4})[A-Z]{0,2})?
只有前面有4位数字时,才允许用户输入0到4位数,然后输入0到2个英文大写字母。请注意,如果输入只包含最多6个字符,则可以在末尾添加$
字符串结尾锚点。