Это почти полностью зависит от реализации вашего ping
, но наиболее вероятной причиной является то, что 08
трактуется как восьмеричное число , потому что оно начинается с 0
.
И, поскольку действительные восьмеричные цифры ограничены 0..7
, предполагается, что это не числовой IP-адрес, а вместо этого имя , которое нужно искать (в DNS для пример).
Это восьмеричное поведение может быть подтверждено (под Windows) следующей расшифровкой:
C:\Users\Pax> ping 192.168.1.061
Pinging 192.168.1.49 with 32 bytes of data:
Reply from 192.168.1.61: Destination host unreachable.
:
061
, по-видимому, считалось восьмеричным из первой строки выходных данных, поскольку 618 (6x8+1) = 4910
, Последующие строки, хотя они утверждают, что проверяет адрес .61
, являются ложными. Это потому, что это мой фактический аппарат, и, если я делаю это без начального нуля, он работает нормально:
C:\Users\Pax>ping 192.168.1.61
Pinging 192.168.1.61 with 32 bytes of data:
Reply from 192.168.1.61: bytes=32 time<1ms TTL=128
:
Если восьмеричный бит содержит не восьмеричную цифру, это , когда он начинает жаловаться на сам хост, а не просто на недоступность (или, что еще хуже, пинг не на том компьютере):
C:\Users\Pax>ping 192.168.1.61
Pinging 192.168.1.61 with 32 bytes of data:
Reply from 192.168.1.61: bytes=32 time<1ms TTL=128
:
C:\Users\Pax>ping 192.0168.1.61
Ping request could not find host 192.0168.1.61.
Please check the name and try again.
/^[a-zA-Z]*$/
Измените *
на +
, если вы не хотите разрешать пустые совпадения.
Классы символов ([...]
) , Якоря (^
и $
) , Повторение (+
, *
)
/
- это просто разделители, они обозначают начало и конец регулярного выражения. Одним из применений этого является то, что теперь вы можете использовать модификаторы .
/^[a-zA-Z]+$/
С макушки головы.
Редактировать:
Или, если вам не нравится странный вид буквального синтаксиса, вы можете сделать это следующим образом
new RegExp("^[a-zA-Z]+$");
Использование других ответов, поскольку вы не знаете, как это делать. вообще, вот пример того, как вы могли бы сделать это в JavaScript:
var charactersOnly = "This contains only characters";
var nonCharacters = "This has _@#*($()*@#$(*@%^_(#@!$ non-characters";
if (charactersOnly.search(/[^a-zA-Z]+/) === -1) {
alert("Only characters");
}
if (nonCharacters.search(/[^a-zA-Z]+/)) {
alert("There are non characters.");
}
/
начало и конец регулярного выражения означают, что это регулярное выражение. Функция search
принимает как строки, так и регулярные выражения, поэтому /
необходимы для определения регулярного выражения.
Из документов MDN функция возвращает -1
, если совпадений нет.
Также обратите внимание: это работает только для a-z, A-Z. Если есть пробелы, это не удастся.
С POSIX Bracket Expressions (не поддерживается Javascript) это можно сделать так:
/[:alpha:]+/
Любой буквенный символ от A до Z или от a до z.
или
/^[[:alpha:]]+$/s
для строгого соответствия пробелам.