2016-04-29 2 views
2

私はIPアドレスだけを受け入れるべき複数行のテキストボックスを持っています(1行に1つ、分離文字はありません)。例えばRegularExpressionValidator複数行テキストボックス内のIP(1行に1つ)を検証する正規表現ですか?

10.1.20.1 
10.1.20.2 

これまでのところ、私は、テキストボックスを検証するためにRegularExpressionValidatorと、次の正規表現を使用していますが、単一のIPアドレスは、テキストボックスの最初の行に入力された場合にのみ動作します。

テキストボックスの2行目に2番目のIPを入力すると、式の検証が失敗し、RegularExpressionValidatorのエラーメッセージが表示されます。

次のように私の現在のRegularExpressionValidatorは、私はちょうど(と役に立つようになります)、ここで正しい正規表現を求めたが、私が作成できるようになる説明をよりないよ、

<asp:RegularExpressionValidator runat="server" ErrorMessage="IP addresses (one per line) only please." ControlToValidate="TextBox1" ValidationExpression="\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" /> 

ですRegexは自分でしてください。

答えて

2

テキスト全体が正規表現と一致しているようです。あなたの正規表現は、IP全体の単語としてのみ一致します。 \b^に置き換え、改行+ IPに一致する0+定量化されたグループを追加する必要があります。ここで

は一例です:

^ # Start of string 
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 
(?:    # Optional - 0+ - group start 
    (?:\r\n|\r|\n) # linebreaks of various types 
    (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) # 0+ lines having only IP 
)* # Optional group end 
$ # End of string 

は説明+答えをthe demo

+0

感謝を参照してください。また、デモのためにリンクされているサイトは、私が持っているRegexのさらなる問題に役立ちます! :D – user2295457

+1

はい、正規表現テストサイトまで、regex101.comはパターンをPCRE/JavaScriptまたはPython正規表現として扱いますので、.NET構文をサポートするサーバー側の複雑なパターンを使用する予定がある場合は、 regexstorm.netまたはregexhero.net。行末が異なる点に注意してください:regex101.comでは改行は '\ n'で、.NET正規表現のテストサイトでは' \ r \ n'です(したがって、複数行の文字列をテストして別々にテストする必要がある場合'$'は '\ r?$'に置き換えなければなりません)。 –

関連する問題