正则表达式为前20个降价单词

时间:2017-03-27 12:21:55

标签: regex markdown

我需要阅读用markdown编写的博客文章的前20个单词,因此我可以在概述页面上将它们显示为预览文本。降价可能如下所示:

# A new horizon
#### Subtitle
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy    eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam   voluptua. At vero eos et accusam et justo duo dolores et ea rebum.

#### Second title
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy    eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam   voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita   kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

有一些规则:

  • 请勿使用以#
  • 开头的标题
  • 选择20个第一个单词,包括标点符号,数字或特殊字符,如ä,ö,ü
  • 如果帖子中没有足够的内容,请选择少于20个字
  • 如果无法选择字词,请选择符合上述规则的100个第一个字符

我在服务器上使用JavaScript来执行此操作,因此感谢任何其他/混合方法。

Regexr与我没那么多的工作方法:http://regexr.com/3fk2f

2 个答案:

答案 0 :(得分:3)

也许这可以胜任这项工作:

^(?!#) *((?:\S+(?: |$)+){1,20})

live

答案 1 :(得分:1)

为了完整起见,使用更简单的正则表达式和Javascript的混合方法:

var md = post.markdown.replace(/#+.+\n/gm, '').split(' ').slice(0, 20).join(' ');

/#+.+\n/gm匹配以#开头的每一行,直到换行符,我们删除所有这些行。

然后我们将剩下的字符串分成白色空格,这些字符串为我们提供了一系列单词(逗号,特殊字符等附加到单词上)。

我们对这个数组进行切片以获得20个第一个条目,然后将它们与空格连接在一起。