Регулярное выражение только для символов a-z, A-Z

Это почти полностью зависит от реализации вашего 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.
26
задан Peter Mortensen 4 January 2011 в 11:23
поделиться

4 ответа

/^[a-zA-Z]*$/

Измените * на +, если вы не хотите разрешать пустые совпадения.

Ссылки:

Классы символов ([...]) , Якоря (^ и $) , Повторение (+ , *)

/ - это просто разделители, они обозначают начало и конец регулярного выражения. Одним из применений этого является то, что теперь вы можете использовать модификаторы .

61
ответ дан NullUserException 28 November 2019 в 06:08
поделиться
/^[a-zA-Z]+$/ 

С макушки головы.

Редактировать:

Или, если вам не нравится странный вид буквального синтаксиса, вы можете сделать это следующим образом

new RegExp("^[a-zA-Z]+$");
9
ответ дан Ollie Edwards 28 November 2019 в 06:08
поделиться

Использование других ответов, поскольку вы не знаете, как это делать. вообще, вот пример того, как вы могли бы сделать это в 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. Если есть пробелы, это не удастся.

23
ответ дан 28 November 2019 в 06:08
поделиться

С POSIX Bracket Expressions (не поддерживается Javascript) это можно сделать так:

/[:alpha:]+/

Любой буквенный символ от A до Z или от a до z.

или

/^[[:alpha:]]+$/s

для строгого соответствия пробелам.

2
ответ дан 28 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: