Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   вывести слова определенной длины с помощью регулярных выражений (https://javascript.ru/forum/dom-window/61196-vyvesti-slova-opredelennojj-dliny-s-pomoshhyu-regulyarnykh-vyrazhenijj.html)

destus 08.02.2016 17:12

Цитата:

Сообщение от рони (Сообщение 406858)
destus,
:) а если так
<script>
         document.addEventListener('DOMContentLoaded', function () {
             var text = ',арбуз';
             text = ' ' + text + ' ';
             var res = text.match(/[^А-Яа-яёЁ]([А-Яа-яёЁ]{5})(?=[^А-Яа-яёЁ])/g);
             var res2 = res.map(function(elem){
                 return elem.replace(/\s*/g,'');
             })
             alert('5 букв: ' + res2);
         })

	</script>

Ну букв же тут 5 :lol: :lol:

А вообще чтобы не было такого можно в return elem.replace(/\s*/g,'') включать удаление всего, что не буква русского алфавита. Например, так

<script>
         document.addEventListener('DOMContentLoaded', function () {
             var text = ',арбуз';
             text = ' ' + text + ' ';
             var res = text.match(/[^А-Яа-яёЁ]([А-Яа-яёЁ]{5})(?=[^А-Яа-яёЁ])/g);
             var res2 = res.map(function(elem){
                return elem.replace(/[^А-Яа-яёЁ]*/g, '');
             })
             alert('5 букв: ' + res2);
         })

	</script>

Deff 08.02.2016 23:56

Вариант2:
var text = 'яблоко, сок, морковка, морковка, помидор, ,тыква, арбуз'
function getword(text,L) {
   var reg = new RegExp("(?:^|[^а-яё])[а-яё]{"+(L-1)+"}[a-zа-яё](?=[^а-яё]|$)", "ig");
   return text.match(reg).join(',').replace(/^[^а-яё]+/,'').split(/[^а-яё]+/);
}
alert(getword(text,5))

рони 09.02.2016 00:14

Deff,
c match трудно избежать пробела в начале

alexandr2006 09.02.2016 10:31

Цитата:

Сообщение от Deff
Вариант:
1 var text = 'яблоко, сок, морковка, помидор, тыква, арбуз'
2 function getwords(text,L) {
3 var reg = new RegExp("(?:^|[\\b\\., ])[a-zа-яё]{"+(L-1)+"}[a-zа-яё](?=[\\b\\., ]|$)", "ig");
4 return text.match(reg);
5 }
6 alert(getwords(text,8))

Хм. Вроде переписал правильно, а почему-то выводит null

var text = 'яблоко, сок, морковка, помидор, тыква, арбуз'
function getwords(text) {
var reg = /(?:^|[\b\., ])[a-zа-яё]{7}[a-zа-яё](?=[\b\., ]|$)/ig;
  return text.match(reg);
}
alert(getwords(text)

рони 09.02.2016 11:30

alexandr2006,
6 строка где ) в конце? ну и кодировку указать <meta charset="utf-8">

Deff 09.02.2016 22:07

Цитата:

Сообщение от alexandr2006
Хм. Вроде переписал правильно, а почему-то выводит null

1. Есть кнопка копирования , правее кода, после наведения на "Запустить"


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