0

我正在尝试验证家庭住址是街道地址。但它每次都返回false。这是我的代码

validateAddress: function (val) {
            console.log('val: ' + val);
            var streetregex = /^[a-zA-Z0-9-\/] ?([a-zA-Z0-9-\/]|[a-zA-Z0-9-\/] )*[a-zA-Z0-9-\/]$/;
            if ( streetregex.test(val) ) {
                console.log('true');
            } else {
                console.log('false');
            }

        }

val 有这种格式的街道地址street name streetnumber, city

我该如何解决它才能正确验证我的地址?

更新

这是我的DEMO

如果你给这样的地址Street name 18, Helsinki。它返回 false 而我希望它为这些地址返回 true。

4

1 回答 1

6

这个正则表达式可以满足您的要求,但我怀疑它对任何实际应用程序都有用:

var regexp = /^[\w\s.-]+\d+,\s*[\w\s.-]+$/;
console.log(regexp.test('Main St. 123, New York'));
console.log(regexp.test('123 Wall St., New York'));

​ 小提琴http://jsfiddle.net/dandv/fxxTK/5/

它的工作方式是:

match a sequence of alphanumeric characters, spaces, period or dash, e.g. "Abel-Johnson St."
followed by a number
followed by a comma
followed by another sequence of alphanumeric characters, spaces, period or dash (e.g. "St. Mary-Helen")

但是,这非常脆弱,您可能根本不应该尝试验证街道地址。

于 2012-11-05T06:33:01.523 回答