2015-03-28 3 views
0

Я пытаюсь использовать регулярные выражения для проверки номеров телефонов, но только для того, чтобы все числа были приняты не только 10, мое регулярное выражение - это [[0-9] {10}), которое должно просто разрешить 10 чисел 0-9. мои тестовые строки были 1234567890, которые прошли и 703482062323, которые также прошли. Что я могу сделать, чтобы исправить эту проблему?QRegularExpression для телефонного номера

Код им с помощью, чтобы проверить регулярное выражение является

QRegularExpression Phone_Num("^[0-9]{10}"); // 10 numbers in a phone number 
QRegularExpressionMatch match = Phone_Num.match("12345612312312312121237890"); 
qDebug() << match.hasMatch(); 
+0

Try убирая ''^ – ForceBru

+0

, он все еще принимает более 10 номеров – Root0x

ответ

1

если вы действительно хотите точно 10:

^[0-9] {10} $

матч конца-линии так, что она не соответствует подмножество линии с более 10.

#include <QRegularExpression> 
#include <QDebug> 

int main() { 
    QRegularExpression re("^[0-9]{10}$"); 
    qDebug() << re.match("12345678901123").hasMatch(); 
    qDebug() << re.match("1234567890").hasMatch(); 
    qDebug() << re.match("12345678").hasMatch(); 
    qDebug() << re.match("123123123a").hasMatch(); 
} 

выход:

false 
true 
false 
false 
+0

, вам не нужно использовать группы захвата, просто '^ [0-9] {10} $' будет достаточно. –

+0

правильный. изм. не знаю почему я их там, наверное, просто рефлекс. @AvinashRaj – aep

0

См this, пожалуйста. Ваше регулярное выражение в порядке, так как каждая строка содержит не менее 10 цифр. Вы можете использовать такую ​​группировку: ([0-9]{10}), а затем извлечь группу как-то (см. this).

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

  • Нет связанных вопросов^_^