我如何获得正则表达式的特定部分?

时间:2017-11-30 21:22:23

标签: javascript regex parsing

我试图获取网址的域名。我可以运行一系列if语句来检查url包含的内容,但理想情况下我会使用正则表达式。

以下正则表达式^[^.]*:[\/]{0,2}[w]{0,3}[.]{0,1}[\w]*.[\w\W]*$可以完成我想要的任务。

这适用于: https://www.google.com http://www.google.com www.google.com

现在我只想从这个正则表达式中获取google.com,但不确定如何做到这一点。

2 个答案:

答案 0 :(得分:1)

参考@PM 77-1

的评论

RegExp.prototype.exec()mdn-docs)为您提供一个结果数组,其中每个索引对应于表达式中的»捕获组«:

var
  input = 'Hello',
  finder = /^(H)ell(o)/m,
  match = finder.exec(input);

console.log(match) // ["Hello", "H", "o"]

索引0是整个匹配项,每个后续项都是捕获组的结果,这些捕获组由正则表达式中的(…)建立,并在表达式中从左到右排序。

答案 1 :(得分:-1)

如果我正确理解您的问题,

试试这个^([^.]*:[\/]{0,2}[w]{0,3}[.]{0,1}){0,1}[\w]*.[\w\W]*$

解释:

我决定将寻找协议的部分和www部分[^.]*:[\/]{0,2}[w]{0,3}[.]{0,1}分组,并通过将其包装在括号(...)中并添加0或1次子句将其分组在一起整个小组{0,1}