-2

私は HTML と JavaScript の初心者です。RegExp 関数を使用して、以下の正規表現を使用して IP アドレスを検証しようとしています。しかし、この正規表現の問題は、無効な IP アドレスに対しても検証して true を返すことです。

たとえば、IP アドレスが として入力された場合、正規表現は正しく機能しますが、IP アドレスが として入力され10.94.161.125た場合は true を返します10/94/161/125

実際、( 、.など@)の代わりにある文字は、関数が false を返すようにするのではなく、true を返します。「\」の正確な違いを教えてください。正規表現を正しく機能させるために作成しています。正規表現を正しく機能させていません。ここは説明が必要です。!#

正規表現が機能しないケースのシナリオ:

var ipRE = new RegExp( '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$' );

正規表現の使用例

var ipRE = new RegExp( '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$' );
4

2 に答える 2

1

参考までに、誰かが答えを探してここに来る場合:

バックスラッシュ(\)を使用して、アポストロフィ、新しい行、引用符、およびその他の特殊文字を文字列に挿入できます。

例:

var str = 'You\'re welcome';

をエスケープしない'と、文字列は後に終了しますYou

正規表現ではドットは特別な意味を持つため、正規表現ではドットをエスケープする必要があります。バックスラッシュはjavascriptで特別な意味を持つため、エスケープする必要があります。

于 2013-03-11T10:25:30.970 に答える
0
ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";

と :

ValidHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";
于 2013-03-11T10:15:12.600 に答える