2015-04-01 3 views
1

Это продолжение previous thread, потому что ни один из ответов там не дал ожидаемого результата. Я получаю super wierd поведение с использованием регулярных выражений для соответствия датам. Я хочу, чтобы соответствовать следующие даты:Какое регулярное выражение соответствует квадратной скобке? (Часть II)

[month-day] 

Такие, как:

"[01-23]" // January 23rd is a valid date 
"[02-31]" // February 31st is an invalid date 
"[02-16]" // valid 
"[ 6-03]" // invalid format 

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

regex = /\[^[0-1][1-9]\-[0-3][0-9]\]/ 

Я пытался поставить как один \ и двойной \ линии всасывания скобки, но ничто, кажется, не работает для сопоставления этих дат. Есть идеи?

Спасибо!

+1

Что вы ожидаете, что ''^делать? – jwodder

+0

Чтобы соответствовать первой скобке в выражении –

+0

Это не будет сделано. В этом контексте он будет рассматриваться как буквальный карет. Я думаю, что вы на самом деле имеете в виду это/^ \ [[0-1] [1-9] \ - [0-3] [0-9] \]/ – rhuffstedtler

ответ

4

Проблема с вашим регулярным выражением заключается в размещении якоря начала строки ^после начальная квадратная скобка. Этого не может быть, поэтому ваше регулярное выражение никогда не соответствует чему-либо.

Перемещение якоря в начале вашего выражения, чтобы исправить эту проблему:

regex = /^\[[0-1][1-9]\-[0-3][0-9]\]/ 
2

положить «начало строки» символов ^ первый:

regex = /^\[[0-1][1-9]-[0-3][0-9]\]/ 

И вам не нужно избегайте среднего минуса - в этом контексте.

1

Вы помещаете якорь ^ в неправильном месте. Он должен быть в самом начале или никогда не будет соответствовать. Кроме того, ваше регулярное выражение, даже не работает так, как вы хотите, чтобы работать:

https://regex101.com/r/tV8hH7/1

+0

lol Я не работал над остальной частью ! –

+1

А ладно. Удачи вам тогда, если вы не хотите помочь с этим – m0meni

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