基本的に許可したいすべてのフォーマットを許可するreg Expを作成しました。ただし、() にはまだ少し問題があります...
^\(?(\+?\d+)?\)? ?\d*(-?\d{2,3} ?){0,4}$
これは有効です: (+356-123 456 78、ただし、そうすべきではありません.... +356 と同じ)-123 456 78。
パターンに () の両方が含まれているか、まったく含まれていないことを確認する方法を知っている人はいますか?
基本的に許可したいすべてのフォーマットを許可するreg Expを作成しました。ただし、() にはまだ少し問題があります...
^\(?(\+?\d+)?\)? ?\d*(-?\d{2,3} ?){0,4}$
これは有効です: (+356-123 456 78、ただし、そうすべきではありません.... +356 と同じ)-123 456 78。
パターンに () の両方が含まれているか、まったく含まれていないことを確認する方法を知っている人はいますか?
まず、括弧のバランスをチェックする正規表現を書くことはできないことに注意してください。かっこのペアを 1 つだけ許可する場合は、正規表現を作成して、両方が存在するか、どちらも存在しないことを確認できます。しかし、任意の数の括弧をペアでのみ許可したい場合、正規表現はその仕事をするのに十分強力ではありません。実際のパーサーが必要です。
+
個人的には、電話番号から数字、スペース、記号以外を取り除くだけです。これは、ITU-T 標準 E.123 で推奨されている国際表記であり、括弧を気にする必要がありません。
これを試して:
^(?:\((\+?\d+)?\)|\+?\d+) ?\d*(-?\d{2,3} ?){0,4}$
市外局番は、括弧付きまたはなしのいずれかの市外局番を持つことができます。
これを処理する最も簡単な方法は、電話番号フィールドの非数字を取り除き、空白を正規化することです。電話番号フィールドに多くのばかげた形式で入力するのは 10 人です。2段階のプロセスをお勧めします:
// Strip non-numbers and whitespace
var cleanPhone = phoneNumber.replace( /[^0-9\s]/, "" );
// All whitespace are now single spaces
cleanPhone = cleanPhone.replace( /\s+/, " " );
if( cleanPhone.match(/* place your (now simple) validation regex here */) ) {
// Valid!
}