Прошу помощи с js match regexp

174
27 января 2018, 00:25

Есть текст, содержащий вхождения вида TEXT1/text2-text3.

  • TEXT1 — это одно из двух, TEXT11 или TEXT12 например.
  • Далее всегда идет слеш (/).
  • Далее следуют произвольные text2 и text3, разделенные тире (-).
  • Заканчивается это табом или пробелом.

Мне нужно из этого текста вынести в массив все строки, попадающие под шаблон. Пробовал много чего, в оконцовке

console.log(text.match(/(TEXT11\/.*[ \t])$/g));

Не могу объять я эти регулярки, помогите с разъяснениями плз.

UPD: вот пример: https://jsbin.com/cosukilivi/edit?html,js,output Проблема - второй элемент массива - вся строка, а нужно из нее "выдернуть" два элемента SIP/text2-text3 разными элементами.

UPD2: Ответ из комментов: text.match(/\w+/\S+-\S+/g) работает, спасибо!

Answer 1

var text = `TEXT1/text2-text3  
TEXT2/sddasfkla dsajkh aksdjh f-ds asd asd a   
dhasjkhdk askdjh ajks 
TEXT1/text2-text3  
TEXT2/sddasfkla dsajkh aksdjh fds asd asd a   
  TEXT2/sddasfkla dsajkh aksdjh fds asd asd-a 
TEXT2/sddasfkla dsajkh aksdjh fds-asd asd a 
TEXT2/sddasfkla dsajkh aksdjh fds-asd asd-a 
dhasjkhdk askdjh ajks 
dhasjkhd/k askdjh-ajks` 
 
console.log( 
  text.split('\n').filter(s => s.match(/^\s*TEXT[12]\/[^-]+-[^-]+\s*$/)) 
)

READ ALSO
Проблемы с импортом в NodeJS

Проблемы с импортом в NodeJS

Я пытаюсь вызвать функцию "cryptPassword" из модуля "passport" и использовать её в хуке для модели "Users" (я использую sequelize)

213
Vuejs пустая и заполненная форма

Vuejs пустая и заполненная форма

Делаю одностраничное приложениеНа странице есть несколько форм, каждая из которых позволяет добавлять информацию в БД

164
Как вставить текст с jQuery (AJAX) в HTML?

Как вставить текст с jQuery (AJAX) в HTML?

Подскажите, у меня вот такой HTML (CSS потом вынесу):

166
Просмотр пароля элемента input с типом password

Просмотр пароля элемента input с типом password

Допустим, у нас есть форма, и в ней есть текстовое поле с вводом пароля:

150