域名的javascript正则表达式

时间:2015-09-23 19:17:41

标签: javascript regex

我正在尝试编写一个匹配域名的正则表达式,如下所示:

NS1.MDNSSERVICE
NS.INMOTIONHOSTING

忽略其他条目,尤其是那些不包含任何点(。)

的条目

但是,我得到的结果与我的理解不一致。这是我的代码:

var regex = new RegExp("^[a-z0-9-]+\.[a-z0-9-]+(\.[a-z0-9-]+){0,2}$", "i");
"file".match(regex);

输出

[ 'file',
  undefined,
  index: 0,
  input: 'file' ]

我的理解是:

^ : match the beginning of line
[a-z0-9-]+ : match one of more occurrence of alphanumeric or hyphen(-).
\. : match the literal dot(.)

由于我明确提到要匹配点(。),不确定为什么它会返回与" file"等关键字匹配的匹配项。

1 个答案:

答案 0 :(得分:2)

您需要使用升格符号或以构造函数表示法双重转义元字符。这里有一个文字表示法,因为你的模式不是动态构建的:

/^[a-z0-9-]+\.[a-z0-9-]+(\.[a-z0-9-]+){0,2}$/i

请参阅代码段:



var regex = /^[a-z0-9-]+\.[a-z0-9-]+(\.[a-z0-9-]+){0,2}$/i;
console.log("file".match(regex)); // --> null
console.log("NS.INMOTIONHOSTING".match(regex)); 
// --> ["NS.INMOTIONHOSTING", undefined, index: 0, input: "NS.INMOTIONHOSTING"]