javascript正则表达式提取子匹配项

JavaScript 同时被 2 个专栏收录
159 篇文章 0 订阅
146 篇文章 0 订阅

C#里所用的正则表达式,如果要提取字符串里的子匹配项(我都不知道那个叫啥名字,别名?)是很方便的,比如:

Regex rx = new Regex(@"<title>(?<title>[\s\S]+)?</title>", RegexOptions.Compiled | RegexOptions.IgnoreCase);
Match m = rx.Match(content);
if (m.Success)
{
	string title = m.Result("${title}");
}

但如果是javascript呢,咋整?两边语法好像稍有点不一样。我弄了下,只有一些支离破碎的经验值,先记录下来:

str = "<html><head><title>呵呵呵</title></head><body></body></html>";
reg = /<title>([\s\S]+)<\/title>/gi
var result;
if ((result = reg.exec(str)) != null) {
	alert(result);//显示“<title>呵呵呵</title>”,“呵呵呵”
	alert(result[1]);//显示“呵呵呵”
	//
}

2021.09.05
如果有多个匹配,需要用循环语句来获取

function getLevels (content) {
  let levels = ''

  let reg = /\d+级/gi
  let ms = reg.exec(content)
  while (ms != null && ms.length > 0) {
    levels += '、' + ms[0]
    ms = reg.exec(content)
  }

  return (levels.length > 0) ? levels.substr(1) : levels
}

参考文章:
http://www.html-js.com/article/3420

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值