用于连字符的正则表达式

时间:2015-12-18 03:40:09

标签: javascript regex

我在段落中用连字符分隔了我想要提取的单词。

我已尝试使用正则表达式\w+-\w,但这并未按预期工作。

这是用JavaScript编写的完整代码。

var string = "time to eval-u-ate";
var result = string.match(/\w+-\w/g); // ["eval-u"]

返回字符串eval-u。我希望结果为eval-u-ate。如何修改正则表达式以匹配完整的带连字符的单词。

1 个答案:

答案 0 :(得分:6)

您可以使用以下正则表达式

((?:\w+-)+\w+)
  1. (?:\w+-)+:匹配一个或多个字母数字字符,包括下划线符号后跟连字符。 (?:将不会添加捕获的组
  2. \w+:匹配一个或多个字母数字字符,包括下划线符号
  3. ():捕获小组。可以使用$n访问匹配,其中n是捕获组编号。 $1在这种情况下,因为它是第一次捕获组。
  4. g:使用全局标记获取所有可能的匹配
  5. <强>演示

    &#13;
    &#13;
    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>');
    &#13;
    &#13;
    &#13;

    Regex101 Demo