Чтобы добавить больше к тому, что сказал @AliAnarkali, HOC возвращает вам компонент, поэтому, когда вы пишете, как
const EnhancedApp = withProps(App);
, EnhancedApp в основном
const EnhancedApp = props => {
return <Component {...props}/>
}
, который является функциональным компонентом и когда вы рендерите EnhancedApp, например
<EnhancedApp onChange={this.onChange} value={this.state.value} />
Это похоже на то, как функциональный компонент получает onChange и значение в качестве реквизита и, следовательно, в HOC, внутренняя функция получает такие реквизиты.
Вы можете использовать следующее regex
((?:\w+-)+\w+)
(?:\w+-)+
: Соответствует одному или нескольким буквенно-цифровым символам, включая символ подчеркивания, а затем дефис. (?:
не добавит в захваченную группу \w+
: соответствует одному или нескольким буквенно-цифровым символам, включая символ подчеркивания ()
: группа захвата. Доступ к совпадениям можно получить с помощью $n
, где n
- номер группы захвата. $1
в этом случае, поскольку это первая группа захвата. 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>');