Регулярные выражения соответствуют ровно 7 или 9 цифрам [дубликаты]

This question already has an answer here:

Is there a regex quantifier that says “either x or y repeats”? 4 answers

Мои регулярные навыки почти равны нулю, и я пытаюсь найти в поле ровно 7 или 9 чисел (не между 7 или 9, поэтому никакие 8 чисел недопустимы).

Я пытался (не смейтесь)

/^([0-9]{7} | [0-9]{9})

а также

/^([0-9]{7 | 9})

если кто-то может помочь и объяснить ответ, это будет высоко ценится.

Я предполагаю (может быть неправильно), что это не имеет значения, какой язык программирования я использую

Спасибо

Ответы на вопрос(6)

^\d{7}(\d{2})?$

это проще сделать на языке программирования, который вы используете, но это также может быть достигнуто с помощью регулярных выражений. Взгляните на эту ссылку:Регулярное выражение для ограничения количества символов до 10

$ чтобы соответствовать концу строки и завершающемуся разделителю. Вы также можете заменить[0-9] с ярлыком\d:

/^(\d{7}|\d{9})$/

за которыми следуют еще две цифры:

[0-9]{7}([0-9]{2})?
 03 авг. 2012 г., 16:42
Зависит от того, где они его используют. Не для JavaPattern.matches() например.
 03 авг. 2012 г., 16:41
Вы должны закрепить выражение.
Решение Вопроса
/^\d{7}(?:\d{2})?$/

\d это современное регулярное выражение для[0-9], с помощью(?: предотвращаетзахват группы Вы не хотите или нуждаетесь в том, чтобы происходить.

 25 июл. 2018 г., 22:03
@SaniYusuf: Конечно, это так. Может быть, попробуйте сначала. Почему ты так думал?
 26 июл. 2018 г., 03:11
Я должен был уточнить. Он не поймает вход, где тип является числом, поскольку 00000 по-прежнему оценивается как 0. Изменение типа текста решило эту проблему.
 28 мар. 2018 г., 20:10
старый ответ, я знаю, но почему бы не работать?/^\d{7}(\d{2})?$/ Я понимаю, что это создаст групповой захват - но имеет ли это значение в этом случае? Интересно, причина в памяти? Будьте нежны - регулярное выражение - не моя крепость.
 23 июл. 2018 г., 22:14
Этот ответ не будет поймать 7 нулей, как 0000000
 10 апр. 2018 г., 19:37
@calipoop: он будет работать нормально, это просто плохая привычка запрашивать поведение (захват группы), которое вам не нужно.

если вы просто удалите пробелы (и, возможно, скобки).

Ваш ответ на вопрос