匹配语句结束时的Javascript [0]

时间:2012-02-24 09:42:16

标签: javascript regex match

我有以下内容:

    var1 = "www.asite.page.co.uk";
    var2 = '.' + var1.match(/\w*\.\w*$/) [0];

我知道它正试图实现“.co.uk”,但我不知道[0]的作用。 是错误处理吗?

4 个答案:

答案 0 :(得分:4)

match方法返回一个匹配数组,因此[0]获取该数组的第一个元素 - 即只是完全匹配。

有关更完整的说明,请参阅matchRob W's answer的文档。

答案 1 :(得分:4)

match会返回字符串数组

没有全局标志,数组的组成如下:

  • 仅使用第一次匹配。
  • 第一个键[0]包含完整的第一个匹配
  • 其他键包含第一场比赛中匹配的

示例:

var string = 'abc_123_abd_456';
var regexp = /_([0-9])/; // Matches an underscore, and groups a number
var match = string.match(regexp);
// match[0] = _1 (full match)
// match[1] = 1  (group)

指定全局标志时,数组包含所有完整匹配项:

var string = 'abc_123_abd_456';
var regexp = /_([0-9])/g; // Matches an underscore, and groups a number, GLOBAL
var match = string.match(regexp);
// match[0] = _1 (first full match)
// match[1] = _4 (second full match)

我建议看看:

答案 2 :(得分:3)

请参阅RobW的答案,以获得完整和准确的参考。


match方法返回一个数组。

  

match()方法搜索正则表达式和字符串之间的匹配,并返回匹配项   此方法返回匹配数组,如果未找到匹配项,则返回null。

[0]仅用于返回第一个元素。

答案 3 :(得分:1)

当您需要一个字符串时,使用replace而不是match通常很实用:

 var1 = "www.asite.page.co.uk";
 var2 = '.' + var1.replace(/.+?(\w*\.\w*)$/, '$1'); // .co.uk
顺便说一下,你的表情对我来说不合适。匹配TLD的更好方法是

(\.[a-z]+\.[a-z][a-z]|\.[a-z]{3,})$

匹配'.co.uk'和'.com'。例如:

tld = "site.co.uk".replace(/.+?(\.[a-z]+\.[a-z][a-z]|\.[a-z]{3,})$/, '$1'); // .co.uk
tld = "yyy.com".replace(/.+?(\.[a-z]+\.[a-z][a-z]|\.[a-z]{3,})$/, '$1'); // .com