如何找到正则表达式的部分 - 整数?

时间:2013-07-29 17:55:43

标签: javascript regex

当我尝试接收3部分正则表达式时,如果字符串不完全等于正则表达式,则返回错误Uncaught TypeError: Cannot read property '1' of null

如何一次性接收正则表达式的每个部分

var str = this.value;
var da = str.match(/(\+7)(\d{3})(\d{3})/);
var newStr = da[1] + "(" + da[2] + ")" + da[3];

如果str == +7则如何接收da [1],如果没有错误,str == +7 922则为da [2]?

1 个答案:

答案 0 :(得分:2)

您可以使用?关注第二个捕获组,使其成为可选项:

var da = str.match(/(\+7)(\d{3})?/);
// -----------------------------^

然后,对于字符串"+7",匹配将成功,da[1]将为+7da[2]将为undefined

更新:对于您添加到问题中的第三个捕获组也是如此。 : - )