括弧は、一致の一部のみをキャプチャ/置換するために使用されます。たとえば、内線番号がある場合とない場合がある電話番号を照合するために使用する場合です。この関数は文字列全体に一致するため (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
例 1 (テキストが返される)、またはsearch
例 2 のようにインデックスによってより適切に処理されます。pswgの答えが展開されます。