-1

私はこれまで私のフォームの電話番号を検証するためにこれを使用しています:

/^\s*\+?\s*([0-9]+\s*)+\s*(\((\+?[0-9]+\s*)+\))?\s*[0-9-\s]*[0-9]\s*$/

それはそれらの数字のように機能します:+021 (+12) 113-2145しかし私はこのようにそれの最後に拡張子を追加する必要があります:+021 (+12) 113-2145 x 123それで私はどのように文字xを追加し、その後に数字を追加することができますか?

xまた、上記のコードのように、と数字の間のスペースはオプションである必要があります。

何か案が?ありがとう!

4

2 に答える 2

2

[0-9]まず、のすべてのインスタンスを短いものに置き換えることができます\d。(10進数用)

次に、これを元の正規表現に追加します。

(x\s*[\d]{3})?

だからそれは

/^\s*\+?\s*([\d]+\s*)+\s*(\((\+?[\d]+\s*)+\))?\s*[\d-\s]*[\d]\s*(x\s*[\d]{3})?$/

編集:拡張機能をオプションにしました

編集2:\d代わりに使用[0-9]

于 2012-08-23T23:57:35.763 に答える
1

試す:

/^\s*\+?\s*([0-9]+\s*)+\s*(\((\+?[0-9]+\s*)+\))?\s*[0-9-\s]*[0-9]\s*(x\s*[0-9]+)?$/;

追加:(x \ s * [0-9] +)?; 編集:

$pattern = '/^\s*\+?\s*([0-9]+\s*)+\s*(\((\+?[0-9]+\s*)+\))?\s*[0-9-\s]*[0-9]\s*(x\s*[0-9]+)?$/';
$subject = '+021 (+12) 113-2145 x 123';
if(preg_match($pattern, $subject))
    echo 'matched';
于 2012-08-23T23:55:42.760 に答える