2

我想使用正则表达式在 JavaScript 中验证居住地址,但我对正则表达式了解不多,我尝试构建自己的正则表达式 ( /^[a-zA-Z\s](\d)?$/),但它似乎无法正常工作。

我想要实现的是允许字母、空格和至少一个数字(这是必需的),并且应该有可能插入斜杠/,但不应该是必需的。

有人可以帮我吗?

4

1 回答 1

5

我会让你开始,但是当你习惯了正则表达式时,你会发现自己变得更加具体。首先,让我们检查您的正则表达式:

/^[a-zA-Z\s](\d)?$/

这里要注意的重要一点是,这个正则表达式最多只能匹配一个两个字符的字符串!字符类 ,[ ... ]匹配单个字符:在您的情况下,是字母和空格。您需要将其与所谓的量词结合起来,例如 *,意思是“零或更多”,+意思是“一个或多个”,?意思是“零或一”。您在其他地方使用了量词,(\d)?,您说的是“零或一个”数字字符。但你真正想要的看起来更像这样:

/^[a-zA-Z\s\d\/]+$/

在这里,我们说的是“一个或多个”字母、空格、数字或斜杠(请注意,正斜杠必须使用反斜杠进行转义)。

最后,您说要要求“至少一个”数字。这可以通过正则表达式中更高级的构造来实现,称为“环视断言”。你要这个:

/^(?=.*\d)[a-zA-Z\s\d\/]+$/

特别是,这是一个积极的前瞻性断言,您可以自己研究。没有前瞻断言的另一种方法是:

/^[a-zA-Z\s\d\/]*\d[a-zA-Z\s\d\/]*$/

这显然更复杂,但是当你能够理解这一点时,你就知道你已经在理解正则表达式的路上了。祝你好运!

于 2012-10-31T07:58:26.673 回答