RegExpValidator MXML

#regex #apache-flex #mxml

Вопрос:

Привет
, у меня проблема с регулярным выражением. У меня есть RegExpValidator в MXML, и я хочу, чтобы он был недействительным, если источник содержит a или b
, Мой RegExpValidator

 <mx:RegExpValidator source="{value}"
                    property="text"
                    expression='.*[^ab].*'
                    valid="isValid(event)"
                    invalid="isInvalid(event)"/>
 

Мое выражение лица такое expression='.*[^ab].*'
Когда это просто a, b или a и b (один или несколько раз), выражение недопустимо : ОК
Когда это все остальное, выражение допустимо : ХОРОШО
Но когда это a или/и b с другими карактерами, это также допустимо. Что мне нужно изменить, чтобы это стало недействительным?

Ответ №1:

Представьте себе веревочку abc . Если вы примените .*[^ab].* к нему регулярное выражение, первое .* будет соответствовать ab , [^ab] совпадения c , а последнее .* соответствует пустой строке.

Кроме того, если вы не привязываете регулярное выражение к началу и концу строки, может случиться (в зависимости от реализации вашего валидатора), что регулярное выражение объявит об успехе, если совпадает только подстрока.

Ты хочешь этого:

 ^[^ab]*$
 

Это соответствует любому количеству символов, кроме a или b . ^ привязывает регулярное выражение к началу, $ к концу строки.

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

1. Я ошибся, это не б или в, это а или в

Ответ №2:

Существует множество онлайн-инструментов, которые могут помочь вам найти правильное регулярное выражение. Некоторые из них могут занять у вас некоторое время, чтобы усовершенствовать 😛

Тот, которым я в основном пользуюсь, вот этот: http://gskinner.com/RegExr/

Овации