当前位置: 首页 > 知识库问答 >
问题:

带有regex用于邮政编码的JavaFX-TextField

元阳荣
2023-03-14

编辑:对于尚未使用JavaFX的用户:当用户只输入一个字符时,将调用方法check(String text)。所以结果也应该是真的,当有1到5个数字时。但不会更多;-)


public class NumberTextField extends TextField{

    ErrorLabel label;

    NumberTextField(String text, ErrorLabel label){
        setText(text);
        setFont(Font.font("Calibri", 17));
        setMinHeight(35);
        setMinWidth(200);
        setMaxWidth(200);
        this.label = label;
    }

    NumberTextField(){}

    @Override
    public void replaceText(int start, int end, String text){
        if(check(text)) {
            super.replaceText(start, end, text);
        }
    }

    @Override
    public void replaceSelection(String text){
        if(check(text)){
            super.replaceSelection(text);
        }
    }

    private boolean check(String text){
        if(text.matches("^[0-9]{0,5}$")){
            label.setText("Success");
            label.setBlack();
            return true;
        } else{
            return false;
        }
    }

共有1个答案

壤驷志学
2023-03-14

您的原始表达式应该可以正常工作,但是如果我们希望验证一个五位数的zip,我们可能需要删除0量词:

^[0-9]{5}$
^\d{5}$

出于验证的目的,我们可能希望保留开始和结束锚,但是为了测试,我们可以删除并查看:

[0-9]{5}
\d{5}

很可能其他一些字符会通过我们的输入,这是我们不希望的。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "^[0-9]{5}$";
final String string = "01234\n"
     + "012345\n"
     + "0\n"
     + "1234";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}
 类似资料:
  • 问题内容: 我正在编写一个特定于美国的Web应用程序,因此其他国家/地区用于邮政编码的格式并不重要。我有一份我们要加载到包含以下内容的数据库表中的邮政编码列表: 5位美国邮政编码 纬度 经度 usps分类代码 状态码 城市 邮政编码是主键,因为这是我要查询的内容。我开始使用中型int 5,但是它会截断前导零的邮政编码。 我考虑使用char5,但担心对char变量建立索引会对性能造成影响。 所以我的

  • 问题内容: 我正在尝试学习如何“压缩”列表。为此,我有一个程序,在某个特定位置执行以下操作: 这给了我三个列表,,,和,每一个,比方说,大小为20。 现在,我这样做: 但是,当我这样做时: 我得到20,这不是我期望的。我预计三个。我认为我做的事情根本上是错误的。 问题答案: 将三个包含20个元素的列表放在一起时,结果将包含20个元素。每个元素都是一个三元组。 你自己看: 要找出每个元组包含多少个元

  • 本文向大家介绍匹配邮政编码的Java程序,包括了匹配邮政编码的Java程序的使用技巧和注意事项,需要的朋友参考一下 假设我们有以下邮政编码。 现在,设置以下正则表达式以匹配美国的邮政编码。 示例 输出结果

  • 问题内容: 我只是在寻找有关最佳方法的建议… 我需要创建一个搜索功能,以在邮政编码的50英里半径内搜索“用户”。我有一个邮政编码表,其中包含所有美国邮政编码及其纬度/经度,但我只是想找出构造和查询数据的最佳方式… 是否应在用户表中添加纬度/经度列,并在给定邮政编码范围内的所有用户查询它?还是应该在邮政编码表中查询半径范围内的所有邮政编码,然后在用户表中查询所有具有结果(邮政编码)的用户?要么… ?

  • 我用谷歌地图标记找到了一个答案,但是自从它死了,我就陷入了死胡同。 我想知道是否有人知道我将如何在我的网站上为用户复制此内容:https://www.google.ca/maps/place/Toronto,在m4n3m5/@43.7216028,-79.3771275,16z/数据=!3m1!4b1!4m5!3m4!10x89D4CD2E4F1652CD:0xee93f0117ea5797d!8

  • 问题内容: 我从此页面上获取了邮政编码以及它们的经度/纬度等数据库 。它具有以下字段: ZIP,LATITUDE,LONGITUDE,城市,州,县,ZIP_CLASS 数据在文本文件中,但是我将其插入到MySQL表中。我现在的问题是,我如何利用以上字段来计算用户可以在网站上输入的两个邮政编码之间的距离?PHP中的工作代码将不胜感激 问题答案: 您也可以尝试点击网络服务以计算距离。让别人来做繁重的工