Показать сообщение отдельно
  #40 (permalink)  
Старый 15.10.2014, 12:39
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от terminator-101
 
Регистрация: 14.10.2014
Сообщений: 117

Ant_Jhon,
Означает следующее
все \d+ означают 1 или более цифровых символов, тут \d -- метасимвол, означающий диапазон 0-9 (эквивалентен [0-9]), он совпадает с любым 1 цифровым символом, а + означает 1 или более вхождений предыдущего символа. Все ? означают 0 или 1 вхождение предыдущего шаблона. а \. означает просто совпадение с точкой (экранирование для того, чтобы отменить интерпретацию точки как метасимвола). Флаг g означает глобальный поиск, значит в строке foofoo /foo/g найдет 2 foo, а /foo/ -- только первое. m -- это флаг многострочного поиска, это значит(конкретно в JS), что символы ^ и $ будут работать со всеми переносами строк, а не только с началом и концом всей строки.

Ну ты наверное знаешь, но на всякий случай, | означает or, а ^$ -- совпадение с пустой строкой, само-сабой

Вот еще что забыл сказать. Если ты работаешь с файлами, в которых виндовские переносы строк, типа \r\n, ты должен эти строки сначала очистить от всех \r, например вот так

s=s.replace(/\r\n/g, "\n")

иначе, у тебя будет парсится больше пустых строк чем на самом деле, примерно вот такая параша:

s="ab<c1.10a\r\n\r\n>)(*an.11kj5.b10.90f 20c"
re=/(\d+)?\.?\d+\.?|^$/gm
//s=s.replace(/\r\n/g, "\n")
s.match(re)

// [ '1.10', '', '', '', '.11', '5.', '10.90', '20' ]

Последний раз редактировалось terminator-101, 15.10.2014 в 12:47.
Ответить с цитированием