思诚科技 seecen LOGO
咨询热线:0791-87557233
  首页 |   Java EE  
关于思诚
关注官方微信

Java中使用正则表达式验证本地化数据

来源:网络    更新时间:2014-12-2


  数据验证是编写任何用户界面时经常要处理的一项杂务。Java?语言的正则表达式支持可以使数据验证变得更容易。您可以定义一个正则表达式,用于描述有效数据,然后让Java运行时检查它是否匹配。但是有些类型的数据在不同地区有不同的格式。而ResourceBundle类让您可以以一种优雅的方式使用特定于地区的数据。本文展示如何结合这两种技术来解决常见的数据输入问题。

  本文讨论将正则表达式与JavaResourceBundle相结合的一种数据验证技术。Java语言对正则表达式的支持可以大大简化数据验证。您可以将数据与正则表达式进行比较,如果它们匹配,则知道数据是有效的。另一方面,JavaResourceBundle包含翻译好的字符串,用于匹配用户机器上的当前语言和国家设置。ResourceBundle中的字符串通常是出现在应用程序中的文本,但是也可以是特定于某个地区的任何东西。

  您将实践一个示例应用程序,该应用程序从ResourceBundles获得正则表达式,并将它们用于数据验证。通过这种方法,就可以用一块代码来验证很多不同类型的数据。更妙的是,随着更多ResourceBundle的添加,还可以验证更多类型的数据,并且不用更改这段代码中的任何一行。

  本文的示例应用程序是在Eclipse中用VisualEditor构建的。VisualEditor是一种用于构建图形化界面的开放源码工具。为了构建自己的应用程序,您需要在计算机上安装Eclipse和VisualEditor包。这个示例应用程序只是举例说明了验证数据的一种技巧,所以这种方法可用于任何Java应用程序。

  示例应用程序

  我不想花太多的时间讨论这个示例应用程序的所有细节,我只关注其中的数据验证方面的技巧。这个应用程序验证输入到输入域中的邮政编码。您可能知道,在世界的不同地方,邮政编码千差万别。有的是数字,有的则包含字母。即使同是由数字组成的邮政编码,在不同地方其长度也不尽相同。有的国家以特定的模式排列字母和数字,而另外一些国家则采用更自由的格式。所有这些格式都可以用正则表达式来描述。例如,在美国邮政编码是一个五位数,后面还可能跟有一个破折号加一个四位数。清单1展示了描述这种格式的正则表达式:

清单1.用于美国邮政编码的正则表达式

[0-9]{5}(-[0-9]{4})?

  除了格式不同外,邮政编码并不总是被称为邮政编码。例如,美国将邮政编码称为ZIPCode。ResourceBundle的一种常见用法就是处理这种类型的与地区有关的差异。用于美国的ResourceBundle可能包含短语"EnteryourZIPCode",而在用于加拿大的ResourceBundle中,相应的短语可能是"Enteryourpostalcode"。我在本文中演示的技巧也是从ResourceBundle获得用于有效邮政编码的正则表达式。

  为了使这个示例简单化,您将创建一个只有一个输入域和一个Validate按钮的Swing应用程序。用户在输入域中输入文本,然后单击该按钮。如果数据与当前的正则表达式匹配,则应用程序显示一条消息,表明邮政编码有效。因为应用程序使用不同的ResourceBundle,所以正则表达式随着有效数据的规则的变化而变化。由于正则表达式是从文本文件中装载的一个字符串,所以当添加对新类型的邮政编码的支持时,不需要更改代码。

  您将在Eclipse中使用EclipseVisualEditor和EclipseJavaDevelopmentTool的一些特性来构建这个应用程序。您可以在几乎所有开发环境中使用这种技巧。这里的代码应该可以在任何基于Eclipse的产品中运行,例如RationalApplicationDeveloper。

图1展示了该应用程序在EclipseVisualEditor中的样子:

图1.EclipseVisualEditor中的示例应用程序


  VisualEditor提供了四种查看应用程序的方式。在屏幕的顶端是应用程序的可视化图像,源代码在底端。Eclipse还提供了两个视图——Properties视图和JavaBeans视图——可以通过这两个视图来处理应用程序。所有这些查看应用程序的方式都是由EclipseModelingFramework(EMF)控制的。由于已经有一些关于EMF的完整书籍,所以我不会再谈更多的细节。从程序员的角度来看,重要的一点是,任何视图中的变化都会自动发送到其他视图。例如,如果您使用Properties视图将一个对象的背景颜色设为绿色,那么可视化图像和源代码也会自动更新。

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2018