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

14

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   ответов
2

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

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

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

[0-9]{7}([0-9]{2})?
Вы должны закрепить выражение.
Зависит от того, где они его используют. Не для JavaPattern.matches() например.
0

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

23
/^\d{7}(?:\d{2})?$/

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

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

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

0

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

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