2012-05-30 4 views
0

Я хочу написать регулярное выражение для проверки ввода. Входы имеют следующий формат:RegEx для периода и пространства

N. Crystal 

O. J. Faucon 

A. V. E. David 

"^[A-Z. ]*+([a-zA-Z])*$" не работает. Как я могу сопоставить приведенные выше примеры?

+0

@KonradRudolph Я думаю, что ваше исправление исправляет проблему (отсутствует звездочка после второго '[a-zA-Z]' :) – dasblinkenlight

+0

любое решение? plz help –

+0

Попробуйте исправить Konrad (т. е. добавить звездочку). – dasblinkenlight

ответ

3

. NET справедливо жалуется на вложенные кванторы. * и + являются избыточными, удаляют один.

^[A-Z. ]*([a-zA-Z])*$ 

Кроме того, с помощью * здесь кажется довольно неинтуитивными, если вы действительно хотите принять пустой ввод. На самом деле, не ожидаете ли вы хотя бы одного персонажей? (Можно также удалить лишние скобки, поскольку группировка не имеет смысла.)

^[A-Z. ]+[a-zA-Z]+$ 

Наконец, это принимает только обо всем, например, «BAR ... FOOxyz». Вы можете быть более точным:

^([A-Z]\.)+[a-zA-Z]+$ 

Теперь первая группа согласовывает первоначальный (то есть заглавные буквы, за которой следует точка и пробел), и она совпадает с несколькими из них, но, по крайней мере, один.

+0

Спасибо: D | но с вами^[A-Z. ] + [a-zA-Z] + $, набрав: .A. s работает, но в моем случае. Первым символом должен быть капитал, за которым следует точка и пробел. единственным форматом, который должен быть разрешен, является: N. Crystal или О. J. Faucon или A. V. E. David –

+0

это работает, снова спасибо x ^ –

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