Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ошибка в рег.выражении (https://javascript.ru/forum/misc/36361-oshibka-v-reg-vyrazhenii.html)

dima*** 13.03.2013 09:19

ошибка в рег.выражении
 
Не получатся сделать регулярное выражение...

Должно получится:
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>

vflash 13.03.2013 09:49

http://regexpal.com/

rgl 13.03.2013 09:51

Для начала, в девятой строке наверно надо не 1 а i
document.write(c[i][0]+'<br>')

rgl 13.03.2013 09:53

Во-вторых, точка с плюсом, которая вначале после кавычки, съедает все символы до второй закрывающей кавычки

рони 13.03.2013 09:59

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>

rgl 13.03.2013 11:02

<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 13.03.2013 11:19

Что-то не так, не пойму.
Мой пример у меня локально работает и в хроме и в мозилле, но когда пытаюсь посмотреть из форума, в мозилле все ОК, в хроме зависает. Пример рони работает в обоих браузерах. Что у меня не так?

рони 13.03.2013 12:30

rgl,
Google Chrome - нормально Версия 25.0.1364.160 m

Deff 13.03.2013 14:07

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');

---

рони 13.03.2013 14:29

Deff,
отсутствует вторая кавычка в 3 элементе массива, отсутствует 4 пустой элемент.


Часовой пояс GMT +3, время: 19:59.