我在段落中用连字符分隔了我想要提取的单词.
我试过跟随正则表达式\w+-\w
,但是这没有按预期工作.
这是用JavaScript编写的完整代码.
var string = "time to eval-u-ate"; var result = string.match(/\w+-\w/g); // ["eval-u"]
这将返回字符串eval-u
.我想要结果eval-u-ate
.如何修改正则表达式以匹配完整的带连字符的单词.
您可以使用以下正则表达式
((?:\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('' + JSON.stringify(matches, 0, 4) + '
');