2013-03-11 2 views
-2

Я новичок в HTML и JavaScript. Мы пытаемся проверить IP-адрес, используя следующее регулярное выражение, используя функцию RegExp. Но проблема с этим регулярным выражением заключается в том, что это проверка и возвращение true, для неверных IP-адресов.Использование функции RegExp

Например, регулярное выражение работает правильно, когда IP-адрес вводится как 10.94.161.125, но он возвращает true, когда IP-адрес вводится как 10/94/161/125.

В самом деле, любой символ в месте . (как @, !, # и т.д.) не делает функцию, чтобы вернуться ложным, но вместо этого он возвращает истину. Пожалуйста, дайте мне знать, какая именно разница «\». делает, чтобы регулярное выражение работало правильно, где как "." это не делает регулярное выражение работать правильно. Вот где мне нужно разъяснение.

Регулярное выражение нерабочим случай Senario:

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}$'); 

Регулярное выражение работает случай Senario

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}$'); 
+2

Регулярное выражение, которое вы показываете, не раскрывает проблему, которую вы описываете. Отправьте код, который вы * на самом деле * используете, даже лучше, сначала попытайтесь определить разницу. – Tomalak

+0

Эти регулярные выражения отлично работают. – hank

+0

Итак, у вас на самом деле был * рабочий код и теперь вставляете недействительный код, чтобы вы могли задать вопрос? Что это должно сделать? И почему вы не задаете вопрос, который вы действительно хотите задать? – Tomalak

ответ

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])$"; 
+2

Регулярное выражение этой сложности, размещенное без каких-либо объяснений или контекста, вряд ли считается ответом. – Tomalak

1

Для справки, если кто-то приходит сюда ищет ans WER:

обратной косой (\) можно использовать для вставки апострофа, новые линии, кавычки и другие специальные символы в строку.

Пример:

var str = 'You\'re welcome'; 

без побега ', строка будет прекратить после You

В вашем регулярном выражении, точка должна быть экранирована, так как точка имеет особое значение в регулярном выражение. Тогда обратная косая черта должна быть экранирована, потому что она имеет особое значение в javascript.

+0

Спасибо за разъяснение – user2156293

Смежные вопросы