2016-07-06 4 views
0

私はP.O.を持っています。偉大な作業をしているボックスの正規表現が、顧客は主要な '#'が必要な状況に陥っています。ここでP.O.に先頭の「#」を付けます。 Box Regex(JavaScript)

は私の正規表現です:バリデータが失敗の原因となっている

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でプランナーを作成しました。ボックスにテキストを入力すると、バリデーターは真から偽に適切に変更されます。

http://plnkr.co/edit/fpLmZQhRryBC3Z3ArZwV?p=preview

+0

正規表現のポイントは、テキストは* *一致するかどうかを検証している場合は、あなたのplunkerの例は、逆方向に論理的です。 "リトルボーピープ"を文字列として検証できます。 – JayC

答えて

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; 
    } 
} 

Plunker:http://plnkr.co/edit/i5f3vbGWB6SQ0bVRxGNV?p=preview

関連する問題