#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/
Овации