Как разрешить «*» и число только в регулярном выражении: Qt5.2

#regex #windows #ip-address #qregexp #qt5.2

#регулярное выражение #Windows #ip-адрес #qregexp #qt5.2

Вопрос:

Я хочу разрешить * или номер только в моем QLineEdit для IP-адреса.

Мое регулярное выражение:

QRegExp rx ( "^(0|[1-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))$" );

Для чего нужно найти IP Address , теперь я хочу разрешить * символ для диапазона IP-адресов поиска.

т.е. 10.105.*.* к 10.107.*.* этому относиться как 10.105.0.0 к 10.107.255.255

Комментарии:

1. используйте * , и это будет работать

2. Пример: print re.match("^(0|[1-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5])).1[0-9]{1,2}.(*|[0-9]{1,3}).(*|[0-9]{1,3})$","10.105.*.*")

3. Я пробовал так ( "^(*|0|[1-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))$" ) , но это не сработает.

4. Можете ли вы предоставить нам свой полный код? Если вы пытаетесь сопоставить "^(*|0|[1-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))$" с "10.105.*.*" ним, это не удастся

5. Я создал пользовательский IP-адрес, используя QLineEdit и QLabel. Это регулярное выражение предназначено для одного блока IP-адреса. Я использую четыре QLineEdit и три QLabel для создания одного IP-адреса. QLineEdit для получения цифры (ip), затем QLabel для dot . (QLineEdit QLabel QLineEdit QLabel вот так)

Ответ №1:

Попробуйте это Regex , которое соответствует IP-адресу с * и / или между 0-255

 Regex reg = new Regex("^((\*)?|[01]?\d\d?|2[0-4]\d|25[0-5])\.((\*)?|[01]?\d\d?|2[0-4]\d|25[0-5])\.((\*)?|[01]?\d\d?|2[0-4]\d|25[0-5])\.((\*)?|[01]?\d\d?|2[0-4]\d|25[0-5])$");

bool isMatch = reg.IsMatch("*.1.1.255"); //true
isMatch=reg.IsMatch("255.255.255.255"); //true
isMatch=reg.IsMatch("*.*.*.*"); //true
isMatch=reg.IsMatch("0.0.0.0"); //true
isMatch=reg.IsMatch("256.*.*.*);//false
isMatch=reg.IsMatch("2.2.455.*);//false
  

Комментарии:

1. Спасибо за ваше внимание …:)