Сегодня я возился с регулярными выражениями Javascript и узнал это:
//Suppose
var one = 'HELLOxBYE';
var two = 'HELLOBYE';
Вы можете создать регулярное выражение, которое пытается захватить 'x' двумя способами:
/^HELLO(x?)BYE$/ //(A)
//or
/^HELLO(x)?BYE$/ //(B)
Я обнаружил, что когда вы используете (A) для второй переменной, регулярное выражение возвращает пустую строку ''; в то время как при использовании (B) регулярное выражение возвращает ноль.
Вы должны быть осторожны с этим.
Кто-нибудь знает, является ли это кросс-браузерным поведением?
Я проверял это на Google Chrome (Webkit) build 15.
ОБНОВЛЕНИЕ: Ого, только что провёл несколько тестов в Internet Explorer 8, и он возвращает пустую строку '' для обоих случаев. Поэтому я пришел к выводу, что лучшая альтернатива - использовать (A), а затем проверить наличие пустой строки.