2011-03-02 60 views
0

,我需要使用jQuery的正则表达式来验证地址1,地址2,市..验证地址和城市jQuery的正则表达式:如何使用jQuery正则表达式

用于街道地址。法律特征:A-Z,a-z,0-9,连字符,斜杠和单个空格。非法字符:前导空格,尾随空格,相邻空格和其他符号。

用于城市。法律特征:A-Z,a-z和单个空格。非法字符:前导空格,尾随空格,相邻空格和符号。

样本:

地址1:{要求:真实,正则表达式: “A-ZA-Z0-9 *”}

+7

你不能,也不应该。你永远不会写足够通用的东西来处理所有情况。接受用户输入的内容,只要至少有两个单词。你也不应该拒绝一个地址,因为它有前导空格或尾随空格。这对用户来说非常烦人。只是修剪它。 – meagar 2011-03-02 05:13:13

+0

阅读一些教程... – diEcho 2011-03-02 05:13:39

+0

我得到了这个...但它不工作.. [A-ZA-Z0-9](?[A-Za-z0-9 \ -//])* – yogee 2011-03-02 05:21:07

回答

3

我认为你这样做是对一些项目,所以你应该人物了解如何自行完成正则表达式。

但是,我会告诉你。这是我的理解,你需要分别给每个领域的正则表达式,他们将分别验证。

//Address 1 & 2 regex 
regex: /^[a-zA-Z0-9-\/] ?([a-zA-Z0-9-\/]|[a-zA-Z0-9-\/])*[a-zA-Z0-9-\/]$/ 

以字母/数字/破折号/斜线开头,后跟可选空格。按照任意数量的l/n/d/s或l/n/d/s后跟一个空格(因为每个空格都必须以l/n/d/s作为前缀,所以这里强制只有一个空格)。以l/n/d/s结尾。

//City is much easier: 
regex: /^[a-zA-z] ?([a-zA-z]|[a-zA-z])*[a-zA-z]$/ 

和上面几乎一样,只是不用担心数字,破折号和斜线。

退房单元测试:http://jsfiddle.net/LJCzR/4/

如上所述,但如果你不这样做学术的理由,那么我就不会在验证前/后空间或重复的空间都没有。我会默默地清理它。另外,你根本无法解释每一种情况。这种验证只是令人讨厌。

+1

非常感谢你这么多tandu ... – yogee 2011-03-02 08:53:34

1

这是一个很棒的Regexp教程,解释了语法是如何工作的以及如何进行多种类型的验证。 http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/

+3

在那篇文章中有太多的错误的东西,我不知道从哪里开始......除了它不是解决OP的问题(但有趣的是,他仍然接受它,很好笑)。 – 2011-03-02 08:16:44

+2

一个有趣的网站..但它没有提到任何地址或城市验证。我也不同意一些验证器,即电子邮件和密码。密码只是语义上的:它应该是无限的长度并且允许任何特殊字符。电子邮件正则表达式会丢弃大量有效的电子邮件字符,并且不会将其正则表达式显示为不区分大小写! – 2011-03-02 08:24:41

+0

对于不太熟悉Regexp的人来说,这是一个很好的起点。不管使用的方式如何,它都会让OP很好地理解事件在正则表达式中的工作方式。 – Hussein 2011-03-02 08:33:48

2

Yogee,我会非常谨慎地使用正则表达式验证地址。我实际上在SmartyStreets工作,其中我们的专长是地址验证,并且根据经验我知道正则表达式根本不够用除非您想阻止用户使用不符合上述正则表达式的地址百分比,仍然有效,或者如果您想接受仍然适合正则表达式的错误信息。

换句话说,我很快就学会了正则表达式并不是真正验证的全面的,功能性的替代方案。我可以建议你看看一个易于使用的API,为你做到这一点吗?含义:某人(由政府机构认证)已经为您完成了所有困难的事情。验证地址时需要考虑很多因素......很多。

Here's some documentation

所以当然我会推荐我一直在使用的服务,LiveAddress(这是免费的,超级简单的Javascript) - 如果您还有其他问题,我会很乐意亲自帮助您。