js正则提取详解

发布时间:2023-05-18

一、js正则提取文章

在实际的开发中,我们常常需要从一篇文章中提取出某些信息,比如文章标题、作者、发布日期等等。这时候,就可以使用js正则表达式进行提取。 比如,我们要从下面的一篇文章中提取出标题、作者、发布日期等信息:

<div class="article">
  <h2 class="title">这是文章标题</h2>
  <p class="author">作者:小明</p>
  <p class="date">发布日期:2020-10-01</p>
  <p>这是文章正文内容</p>
</div>

我们可以使用如下正则表达式进行提取:

const text = `<div class="article">
  <h2 class="title">这是文章标题</h2>
  <p class="author">作者:小明</p>
  <p class="date">发布日期:2020-10-01</p>
  <p>这是文章正文内容</p>
</div>`;
const titleReg = /<h2.+?>(.+?)<\/h2>/i;
const authorReg = /作者:(.+)/i;
const dateReg = /发布日期:(.+)/i;
const title = text.match(titleReg)[1];
const author = text.match(authorReg)[1];
const date = text.match(dateReg)[1];

上面的代码利用正则表达式分别提取出了标题、作者、发布日期,并将它们存储在对应的变量中。

二、js正则提取多个文本

有时候,我们需要从一段文本中提取出多个子串,可以使用正则表达式的全局匹配(g)来实现。 比如,我们要从下面的一段文本中提取出所有的数字:

const text = "这里有100个苹果和200个梨子。";
const numReg = /\d+/g;
const nums = text.match(numReg);

上面的代码中,numReg使用了全局匹配,将所有的数字都提取出来存储在nums数组中。

三、js正则提取文字

有时候,我们需要从一段文本中提取出中文或英文文字,并去除其中的标点符号。这时候,就可以使用正则表达式。 比如,我们要从下面的一段文本中提取出中文或英文文字:

const text = "这是一个有标点符号的文本,包括:句号.逗号,分号;冒号:引号“”和‘’等等!";
const wordReg = /[a-zA-Z\u4E00-\u9FA5]+/g;
const words = text.match(wordReg);

上面的代码中,wordReg使用了[a-zA-Z\u4E00-\u9FA5]+这个正则表达式,它能够匹配到中英文文字,并将它们提取出来存储在words数组中。

四、js正则提取加减乘除符号

有时候,我们需要从一段表达式中提取出加减乘除符号。这时候,就可以使用正则表达式。 比如,我们要从下面的一段表达式中提取出加减乘除符号:

const expr = "1+2-3*4/5";
const opReg = /[\+\-\*\/]/g;
const ops = expr.match(opReg);

上面的代码中,opReg使用了[\+\-\*\/]这个正则表达式,它能够匹配到加减乘除符号,并将它们提取出来存储在ops数组中。

五、js正则提取日期

有时候,我们需要从一篇文章或一段文本中提取出日期。这时候,就可以使用正则表达式。 比如,我们要从下面的一段文本中提取出日期:

const text = "今天是2020年10月1日,国庆节。";
const dateReg = /\d{4}年\d{1,2}月\d{1,2}日/g;
const dates = text.match(dateReg);

上面的代码中,dateReg使用了\d{4}年\d{1,2}月\d{1,2}日这个正则表达式,它能够匹配到日期,并将它们提取出来存储在dates数组中。

六、js正则提取链接

有时候,我们需要从一篇文章或一段文本中提取出链接。这时候,就可以使用正则表达式。 比如,我们要从下面的一篇文章中提取出链接:

const text = `这是一篇文章,包含了一些链接:
  <a href="https://www.baidu.com">百度</a>
  <a href="https://www.google.com">谷歌</a>
`;
const linkReg = /<a\s+href="(.+?)">(.+?)<\/a>/g;
const links = [];
let match;
while ((match = linkReg.exec(text)) !== null) {
  links.push({
    href: match[1],
    text: match[2]
  });
}

上面的代码中,linkReg使用了<a\s+href="(.+?)">(.+?)<\/a>这个正则表达式,它能够匹配到链接,并将它们提取出来存储在links数组中。在这个例子中,我们使用了循环和exec方法来逐个提取链接。

七、js正则提取加减符号

有时候,我们需要从一篇文章或一段文本中提取出加减符号。这时候,就可以使用正则表达式。 比如,我们要从下面的一段文本中提取出加减符号:

const text = "5+4-3+2-1";
const signReg = /[\+\-]/g;
const signs = text.match(signReg);

上面的代码中,signReg使用了[\+\-]这个正则表达式,它能够匹配到加减符号,并将它们提取出来存储在signs数组中。

八、js正则提取特定字符串

有时候,我们需要从一段文本中提取出特定的字符串。这时候,就可以使用正则表达式。 比如,我们要从下面的一段字符串中提取出以abc开头的字符串:

const text = "abc111abc222abc333";
const abcReg = /abc\d+/g;
const abcs = text.match(abcReg);

上面的代码中,abcReg使用了abc\d+这个正则表达式,它能够匹配到以abc开头的字符串,并将它们提取出来存储在abcs数组中。

九、js正则提取2020

有时候,我们需要从一段文本中提取出特定的数字。比如,我们要从下面的一段文本中提取出2020这个数字:

const text = "这是一段包含2020的文本。";
const yearReg = /2020/;
const year = text.match(yearReg)[0];

上面的代码中,yearReg使用了2020这个数字作为正则表达式,它能够匹配到2020这个数字,并将它提取出来存储在year变量中。

十、js正则提取连续的数字选取3~5个

有时候,我们需要从一段文本中提取连续的数字,并且这些数字的长度在35位之间。这时候,就可以使用正则表达式。 比如,我们要从下面的一段文本中提取出连续的数字,长度在35位之间:

const text = "这里有123456789和98765,还有1234和56789。";
const digitReg = /\b\d{3,5}\b/g;
const digits = text.match(digitReg);

上面的代码中,digitReg使用了\b\d{3,5}\b这个正则表达式,它能够匹配到连续的数字,长度在3~5位之间,并将它们提取出来存储在digits数组中。