ошибка в рег.выражении
Не получатся сделать регулярное выражение...
Должно получится: document.write(c[0][0]);//«Школа №31» document.write(c[0][1]);//Москва document.write(c[1][0]);//«Школа №31» document.write(c[1][1]);//"" <script> var arr='«Школа №31» Москва.«Школа №31».'; reg=/([«]?.+[»]?)(?:\s([А-Яа-я]+))?\./ig; b=arr.match(reg); c=[]; for(i=0;i<b.length;i++){ c[i]=b[i].replace(reg,'$1,$2'); c[i] = c[i].split(','); document.write(c[1][0]+'<br>'); } </script> |
|
Для начала, в девятой строке наверно надо не 1 а i
document.write(c[i][0]+'<br>') |
Во-вторых, точка с плюсом, которая вначале после кавычки, съедает все символы до второй закрывающей кавычки
|
dima***,
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <script> var arr='«Школа №31» Москва.«Школа №31».'; reg=/(«.+?»)\s?([А-Яа-я]*)\./ig; b=arr.match(reg); c=[]; for(i=0;i<b.length;i++){ c[i]=b[i].replace(reg,'$1,$2'); c[i] = c[i].split(','); document.write(c[i]+'<br>'); } </script> </body> </html> |
<html> <head></head> <body> <script> var arr='«Школа №31» Москва.«Школа №31».'; var reg=/(«[^»]*»|[^«\s.]+)[\s.]*/ig var b; while( b=reg.exec(arr) ) document.write( b[1]+"<br>" ); </script> </body> </html> ЗЫ Правильно ли я понял (из примера что должно получиться) что точки тоже надо удалять? ЗЫ2 Сорри за плохой (по мнению некоторых) стиль - применение присваивания внутри while (где ожидается проверка условия, т.е. легко перепутать со сравнением) |
Что-то не так, не пойму.
Мой пример у меня локально работает и в хроме и в мозилле, но когда пытаюсь посмотреть из форума, в мозилле все ОК, в хроме зависает. Пример рони работает в обоих браузерах. Что у меня не так? |
rgl,
Google Chrome - нормально Версия 25.0.1364.160 m |
var arr='«Школа №31» Москва.«Школа №31».'; var arr=arr.split(/[\.\s]*(«[^«»]*»)[\.\s]*/img); arr.slice(0,1);arr.pop(); alert(arr.join('\n')) //document.write(arr.join('\n'); --- |
Deff,
отсутствует вторая кавычка в 3 элементе массива, отсутствует 4 пустой элемент. |
Часовой пояс GMT +3, время: 06:19. |