Включить тире / дефисы в совпадении регулярных выражений [duplicate]

Чтобы добавить больше к тому, что сказал @AliAnarkali, HOC возвращает вам компонент, поэтому, когда вы пишете, как

const EnhancedApp = withProps(App);

, EnhancedApp в основном

  const EnhancedApp = props => {
    return <Component {...props}/>
  }

, который является функциональным компонентом и когда вы рендерите EnhancedApp, например

<EnhancedApp onChange={this.onChange} value={this.state.value} />

Это похоже на то, как функциональный компонент получает onChange и значение в качестве реквизита и, следовательно, в HOC, внутренняя функция получает такие реквизиты.

3
задан Tushar 18 December 2015 в 04:57
поделиться

1 ответ

Вы можете использовать следующее regex

((?:\w+-)+\w+)
  1. (?:\w+-)+: Соответствует одному или нескольким буквенно-цифровым символам, включая символ подчеркивания, а затем дефис. (?: не добавит в захваченную группу
  2. \w+: соответствует одному или нескольким буквенно-цифровым символам, включая символ подчеркивания
  3. (): группа захвата. Доступ к совпадениям можно получить с помощью $n, где n - номер группы захвата. $1 в этом случае, поскольку это первая группа захвата.
  4. g: использовать глобальный флаг для получения всех возможных совпадений

Демо

var string = "time to eval-u-ate Lorem ipsum dolor sit amet, consectetur adipisicing elit. A sed, illum veritatis aut recusandae tempora possimus iure totam distinctio necessitatibus temporibus labore-numquam-dignissimos, officiis velit error-dolores nostrum ipsam.";
var matches = string.match(/((?:\w+-)+\w+)/g);

document.write('<pre>' + JSON.stringify(matches, 0, 4) + '</pre>');

Regex101 Demo

5
ответ дан Tushar 25 August 2018 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: