2015-09-23 2 views
0

Я должен найти до конца строки. Линия либо \ r \ n, либо \ r или \ n в зависимости от ОС.Отрицательный взгляд в js

Так, чтобы упростить его, я думал начать с га или Н или

так в blah! он должен дать мне [ «бла», «а»]

Однако я получаю [ «бла» , 'la'], поскольку js не имеет негативного взгляда раньше.

Мне было интересно, как это осуществить.

Это была моя попытка:

var patt = /.*?(ha|h(?!a)|[^h]a)/; 
var m = patt.exec('blah!') 
+1

Вы имеете в виду * отрицательный внешний вид сзади. Если вы хотите просто * найти * 'a', которому не предшествует' h', просто используйте механизм захвата. Чего вы пытаетесь достичь в качестве конечной цели? Чтобы соответствовать строке? Просто разделите его на '(?: \ R \ n | \ r | \ n)'. Обратите внимание, что даже внутри 1 файла могут быть различные разрывы строк. –

ответ

1

Там нет необходимости переключаться между ha и [^h]a, если вы не хотите, чтобы соответствовать любому другому символу предшествующую a чем h: это ...

ha|a 

... достаточный. Помните, что совмещение в чередовании начинается с самого левого варианта и пытается покрыть как можно больше земли. Таким образом:

\r\n?|\n 

... должно быть достаточно.

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