Почему мое регулярное выражение для пустой строки не работает? - PullRequest
0 голосов
/ 12 января 2012

Я протестировал это на Regexr, и он работает, но в AS3 он не работает:

var emptyResult:* = new RegExp("^\s*$", "gi").exec(myField.text);

или

var emptyResult:* = /^\s*$/gi.exec(myField.text);

Независимо от того, есть ли у меня текств поле или нет, пробел или не пробел, emptyResult всегда равен нулю.Я пробовал с и без тегов g и i, но, похоже, ничего не работает.

Кто-нибудь знает, почему это может быть?

1 Ответ

3 голосов
/ 12 января 2012
  1. Вам не нужен флаг 'i' - он означает 'игнорировать регистр', который применим только к буквам латинского алфавита - вы их не используете.

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

  3. Вы надеваетеВам также не нужен флаг 'g', так как вы пытаетесь проверить всю строку (в вашем случае строка и строка - это одно и то же, \s сначала встретит конец строки, прежде чем $ сможет).

  4. Однако при использовании второго регулярного выражения со снятым флагом 'i' я получу ожидаемые результаты, т. Е. Если весь текст проверенной строки состоитпробела, табуляции, возврата каретки или перевода строки, затем возвращается вся строка.

Например:

trace(/^\s*$/.exec(" \t\r\n")[0].length); // 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...