Как применить регулярное выражение к той же строке, содержащей разные слова? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть следующее регулярное выражение, которое в основном получает строку с дефисами:

/class="(?=\S*[-])([a-zA-Z-]+)/gim

И входная строка:

<div class="hello-world h-123"></div>
<div class="this-is-cool"></div>

Однако моя проблема заключается вчто во входной строке он соответствует только hello-world, но я также хочу сопоставить h-123, используя то же регулярное выражение, но отдельно (группы). По сути, я пытаюсь построить регулярное выражение, которое в основном получает все строки, содержащие тире.

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

Ваш RegExp указывает, начиная с class=" и содержит только буквы. Измените его на буквы и цифры (я использовал \w, который содержит буквы, цифры и подчеркивания), по крайней мере, между ними должна быть хотя бы одна черта:

const regexp = /\w+(-\w+)+/gim
const str = `<div class="hello-world h-123"></div>
<div class="this-is-cool"></div>`

const result = str.match(regexp)

console.log(result)
0 голосов
/ 21 октября 2019

([\ w \ s] * [-] [\ w] *) *

Это будет искать любую строку, которая начинается с буквенно-цифрового символа или пробела, имеет дефис и сопровождаетсябуквенно-цифровой символ. Он делает это несколько раз, чтобы связать воедино фразы, которые могут иметь пробел между первой и самой последней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...