我有一个P.O. Box regex工作得很好,但是客户遇到了他们需要一个领先的#'。
这是我的正则表达式:
text.search(/^ *((#\d+)|((box|bin)[-. \/\\]?\d+)|(.*p[ \.]? ?(o|0)[-. \/\\]? *-?((box|bin)|b|(#|num)?\d+))|(p(ost)? *(o(ff(ice)?)?)? *((box|bin)|b)? *\d+)|(p *-?\/?(o)? *-?box)|post office box|((box|bin)|b) *(number|num|#)? *\d+|(num|number|#) *\d+)/i)
导致验证程序失败的示例地址的格式如下:
#1-322 Brooke Street
如何使用当前的正则表达式设置允许这些地址?
我已经用Angular建了一个plunker。在框中输入一些文本,验证器将适当地从true变为false。
答案 0 :(得分:0)
尝试这样在开头接受单个#作为有效值。
$scope.validateText = function () {
if ($scope.text.search(/^ *((?#\d+)|((box|bin)[-. \/\\]?\d+)|(.*p[ \.]? ?(o|0)[-. \/\\]? *-?((box|bin)|b|(#|num)?\d+))|(p(ost)? *(o(ff(ice)?)?)? *((box|bin)|b)? *\d+)|(p *-?\/?(o)? *-?box)|post office box|((box|bin)|b) *(number|num|#)? *\d+|(num|number|#) *\d+)/i) !== -1) {
$scope.valid = false;
} else {
$scope.valid = true;
}
}