验证输入
正则表达式常用于对输入数据的格式进行验证。应用软件通常要求输入符合某种结构。考
虑一个应用软件,它要求输入一定要符合如下格式,4 个数字一个单词任意字符5 个
数字或字符串6.一个空格然后重复第一个单词手工编写代码来验证这个输入既沉
闷又容易出错,而且这些格式还很可能会改变;在你弄明白之前,可能就需要支持其它的
格式,你精心编写的分析器可能就需要修改并重新调试。让我们写出一个可以验证这个输
入的正则表达式。首先,我们需要一个匹配 4 个数字的表达式。对于数字,我们应该使用
一个特别的缩写,7&。要表示它被重复 4 次,需要一个称为 & 的特定重
复,它用花括号括起来。把这两个合起来,就是我们的正则表达式的开始部分了。
77&4($%
注意,我们需要在转义字符7$之前加一个转义字符,即在我们的字符串中,缩写 7&变成
了 77&。这是因为编译器会把第一个7当成转义字符扔掉;我们需要对7进行转义,这样7才
可以出现在我们的正则表达式中。
接下来,我们需要定义一个单词的方法,即定义一个
字符序列,该序列结束于一个非字母字符。有不只一种方法可以实现它,我们将使用字符
类别也称为字符集$和范围这两个正则表达式的特性来做。字符类别即一个用方括号括起
来的表达式。例如,一个匹配字符 和 中任一个的字符类别表示为:89如果用
范围来表示同样的东西,我们要写:8:9要写一个包含所有字母的字符类型,我们可能
会有点发疯,如果要把它写成:
8&#;'<,)"=.*>?@ABCD+2EF6GHI-JK1LMN9但不用这样;
我们可以用范围来表示:8:=.:N9要注意的是,象这样使用范围要依赖于当前所用的
,如果正则表达式的 标志被打开。使用以上工具以及重复符
O它表示前面的表达式可以重复,但至少重复一次,我们现在可以表示一个单词了。
8:=.:N9O$%
以上正则表达式可以工作,但由于经常要表示一个单词,所以有一个更简单的方法:7)
这个符号匹配所有单词,不仅是 .->DD 的单词,因此它不仅更短,而且也更适用于国际化
的环境。接下来的字符是一个任意字符,我们已经知道要用点来表示。