2015-09-21 3 views
1

Чтобы ответить на последнее упражнение в девятой главе Eloquent JavaScript, я написал регулярное выражение, которое соответствует только номерам в стиле JavaScript.Различия между этими двумя регулярными выражениями незначительны?

Моя регулярное выражение:

/^[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?$/ 

синтаксическая диаграмма: https://www.debuggex.com/r/-E6E-Vtk7RWMv5X9

автора регулярное выражение:

/^(\+|-|)(\d+(\.\d*)?|\.\d+)([eE](\+|-|)\d+)?$/ 

синтаксическая диаграмма: https://www.debuggex.com/r/CCeZTSHeRIxnNXXY

Различия между этими двумя регулярными выражениями незначительны? Есть ли строка, к которой будет соответствовать мое регулярное выражение, но автор не будет, или наоборот?

+0

Для одного авторов требует + или а - в то время как ваш не требует один (плюс 1 для улучшенных регулярных выражений) – b729sefc

+0

@ b729sefc: не требуется плюс/минус. Обратите внимание на «или ничего» '|)'. – Thilo

+0

на самом деле авторы не требуют + или -, но + или - являются группой (в обоих случаях) –

ответ

1
  1. Автора создает обратные ссылки вы не
  2. \d+\.?\d* соответствует такой же, как \d+(\.\d*)?, но последний является более эффективным двигателем мудрая
  3. Вы принуждать матч до конца строки с $

Если вам не нужны дополнительные захваты, они оба же


Есть ли строка, которая будет соответствовать моему регулярному выражению, но автор не будет, или наоборот?

Только если есть текст после числа, например 1 abc

None, так как последний вопрос редактировать

+1

На боковой ноте '[- +] ? 'более эффективен и чист – Mariano

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