0

当我尝试接收正则表达式的 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[2] 如果 str == +7 922 没有错误,我如何接收 da[1]?

4

1 回答 1

2

您可以按照第二个捕获组?使其成为可选:

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

那么对于字符串"+7",匹配成功,da[1]将是+7da[2]将是undefined

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

于 2013-07-29T17:57:37.500 回答