2014-01-07 2 views
0
/.*?/.exec("abc");//output [""] 

Я думаю .*? это не жадный, и он должен вернуться aпочему регулярное выражение. *? только соответствует пустой строке в javascript?

+0

Если вы хотите использовать только один символ, вы можете использовать '/./. Exec ('abc')' без каких-либо модификаторов –

ответ

6

Ну, что ожидается, так как .* означает 0 или более, и, положив ?, вы делаете его неживым, следовательно, он соответствует пустой строке.

Если вы хотите, чтобы соответствовать a, то вы должны использовать:

/.+?/.exec("abc"); 

РАЗНИЦА является + вместо * что означает совпадение 1 или более символов, используя нежадным квантор.

+0

, но в 'abc' нет пустого символа. вы имеете в виду, что он также может соответствовать позиции типа '^ $ \ b'? – looping

+0

Да, это определенно может. В этом случае это просто соответствует '^' – anubhava

+0

, можете ли вы показать мне некоторые статьи о '. *' Совпадении позиции? это немного странно. – looping

0

С помощью * вместо, например, + вы позволили сопоставить пустую строку как не жадный вариант.

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