括号仅用于捕获/替换匹配的一部分。例如,当我使用它来匹配可能有或没有分机的电话号码时。这个函数匹配整个字符串(如果if
是正确的),所以整个字符串被替换,但我只使用特定类型的特定顺序的字符,允许使用空格或其他(“()-x”)字符输入。
如果给定 6512589631x1234 或 1 651 258 9631 1234,它将始终输出格式为 (651) 258-9631 x1234 的字符串。它也不允许(或在这种情况下为格式)免费电话号码,因为它们在我的场地。
function phoneNumber(v) {
// take in a string, return a formatted string (651) 651-6511 x1234
if (v.search(/^[1]{0,1}[-(\s.]{0,1}(?!800|888|877|866|855|900)([2-9][0-9]{2})[-)\s.]{0,2}([2-9][0-9]{2})[-.\s]{0,2}([0-9]{4})[\s]*[x]{0,1}([0-9]{1,5}){1}$/gi) !== -1) {return v.replace(/^[1]{0,1}[-(\s.]{0,1}(?!800|888|877|866|855|900)([2-9][0-9]{2})[-)\s.]{0,2}([2-9][0-9]{2})[-.\s]{0,2}([0-9]{4})[\s]*[x]{0,1}([0-9]{1,5}){1}$/gi,"($1) $2-$3 x$4"); }
if (v.search(/^[1]{0,1}[-(\s.]{0,1}(?!800|888|877|866|855|900)([2-9][0-9]{2})[-)\s.]{0,1}([2-9][0-9]{2})[-.\s]{0,2}([0-9]{4})$/gi) !== -1) { return v.replace(/^[1]{0,1}[-(\s.]{0,1}(?!800|888|877|866|855|900)([2-9][0-9]{2})[-)\s.]{0,1}([2-9][0-9]{2})[-.\s]{0,2}([0-9]{4})$/gi,"($1) $2-$3"); }
return v;
}
这允许我做的是收集区号、前缀、行号和可选的扩展名,并按照我需要的方式对其进行格式化(例如,对于无法遵循指示的用户)。
因此,如果您输入 6516516511x1234 或“(651) 651-6511 x1234”,它将匹配此示例中的一个或另一个正则表达式。
现在您的代码中发生的事情就像@amine-hajyoussef所说的那样 - 正在返回每场比赛开始的索引。match
例如一个(返回search
的文本)或索引(如示例二)可以更好地为您使用该代码提供服务。pswg 的答案扩大了。