2016-11-08 22 views
2

私はこの正規表現を使用して、アプリケーション内の電話番号を認識します。 「\\ +?\\ D {7,23}」 しかし、これは3.1415926のように小数点以下の数字を除外することはできません。電話番号の正規表現と小数点除外

それは電話番号を認識することができ、私に3.1415926のような小数を与えないように、この正規表現を変更する方法

、99.9999999。

この場合、 '1415926'と '9999999'は電話番号として認識されますが、これは望ましくありません。

言い換えれば、私は '。'で数字を拒否したいと思います。電話番号として部分的に認識される。または、電話番号を '。'で続けることはできません。または '。'に従ってください。

ありがとうございました。

最後に、私はenter image description here

+0

「3.14159」などの番号を受け入れるか拒否しますか?これはあなたの質問の文言からは分かりません。 –

+0

@TimBiegeleisen '。'で数字を拒否したい電話番号として部分的に認識される。 – wqyfavor

答えて

2

を使用してこの問題を解決することは、この正規表現を試してみてください:

^\+?((?!\.)\d){7,23}$ 

説明:

\+    string starts with an optional + 
((?!\.)\d){7,23} negative lookahead asserts that string contains between 7 and 23 
        numbers, each of which is not a dot 

ここにデモ:

Regex101

+0

こんにちは、 '^'と '&'でこの正規表現は、テキスト全体が電話番号と一致するかどうかをテストするために使用されます。しかし、私は任意のテキストからすべての電話番号を抽出するために、この正規表現を使用する必要があります。正規表現をテストするために '^'と '$'を削除し、 "3.1415926,0.0000001%、99.999999%、2352352352.553535454.54545455"を使用しても動作しません。 – wqyfavor

+0

私はあなたが使っている正規表現の味やアプリケーションに慣れていませんが、 '。* \ +?((?!\。)\ d){7,23}。*'おそらく複数回、文字列内の任意の場所にパターン。 –

関連する問題