2016-07-27 8 views
-4

以下を受け付ける入力用のパターンを作成しようとしていますが、正規表現ではあまりよくありません。誰かが次の値のための正規表現を作るのを助けることができますか? 「ユニバーサル正規表現」(すべての言語のすべての実装)から小数点を含む正規表現

1 
.25 
0.25 
+0

@anubhava:2番目の例では機能しません。 – Jan

+0

@ chris85:ミリ秒単位でビートしてください:) – Jan

+0

@Jan yeee haw、http://nerdist.com/wp-content/uploads/2015/12/Speedy-Gonzales.jpg – chris85

答えて

2

上の正規表現のデレク・バナスビデオチュートリアルをチェックアウトすることができます

^(\.\d+|\d+(?:\.\d+)?)$ 

|は以上です。
^が文字列の先頭です。
$が終了です。
\.は、リテラル.です。
\dは数字です。
+は、前の文字/グループの1つ以上を意味する量子です。
?は、以前のグループ/文字をオプションにします。

したがって\.\d+は、.で、任意の数の数字です。その後、\d+(?:\.\d+)?には、任意の小数点以下の数値が続きます。

正規表現のデモ:https://regex101.com/r/uG2tT4/1

mおよび/またはg修飾子はこれを使用している場所に応じて必要になる場合があります。 \dも数字文字クラス[0-9]に変換する必要があります。

0

\d*\.\d*

これを使用しても安全だろう単に

\d* = Match for 0 or more digits at the beginning 
\. = After that match for a period (notice that we escaped the period. 
     Not escaping the period has a different meaning altogether.) 
\d* = Match for another set of one or more digits 

に分解される。これは、簡素化しようとします正規表現は最も効率的ではないかもしれませんが、特に大きなセットの場合は

regulに関するチュートリアルAR表現、私はRegularExpressions.infoを提案したり、あなたのために働くだろうする式での私の推測では次のようになりYouTubeの

+0

'.'はその式で有効です。 '\ d'はすべての言語で利用できるわけではありません。 – chris85

+0

\ dがすべての言語で利用できるわけではない場合は、[0,9]に行くことができます。私はこのクールなサイトwww.regexone.comを見つけました。正規表現をテストできます – cr05s19xx

+0

"。"それが通過してはならないときに "1"が失敗すると失敗します。 – rgthree

関連する問題