2016-04-15 13 views
2

のために、私はこれらの文字列にマッチする正規表現が必要です。正規表現「の文字番号」

テスト1
テスト123
テスト1.1(必要なく、きちんとしただろうではない)
テスト
テスト

しかし、以下はありません:
テスト1a

私はこのパターンがどのように見えるかはわかりませんテキストや空白は最後にありますが、前に番号がある場合はそうではありません。

私はこの1つ ^.*([0-9])$(試合のみTest 1ではなく、例えば、TestまたはTest a用) と、この1 ^.*[0-9].$(例TestまたはTest 1のためだけTest 1aではなく、にマッチする) しかし、彼らは何を一致しないを試してみました私は欲しい。あなたの質問(とコメント)で、あなたの文字列を1として

+0

あまりにも不明。仕様は何ですか? \ '(\:\ d +(\。\ d +)?\ p {L} +))?$ $](http://regexstorm.net/tester?p=% 5c%5c%5c%5c%5c%5c%5c%5c%5c%5c%3c%5c%5c %3f%24&i =テスト+ 1%0d%0aテスト+ 123%0d%0aテスト+ 1.1%0d%0aテスト%0d%0aテスト+ a%0d%0a%0d%0aテスト+ 1a&o = m) –

+0

あまりにも多くの可能性と例外があります.https://regex101.com/r/pC5wN5/3はちょうど今のところ動作しますが、多くの場所で失敗すると思われます。 – rock321987

+0

「Test」はプレースホルダです任意のテキスト。 @ rock321987あなたのものは、プレースホルダを除いて私が検索したものです。 –

答えて

1

これは、あなたが

^\w+(\s(\d+(\.\d+)?|[a-z]))?$ 

Regex Demo

に正規表現の内訳を提供し、すべてのケースのために働いている

あなたも大文字を含めたい場合は、あなたがしようとするため
^ #Start of string 
\w+ #Match any characters until next space or end of string 
    (\s #Match a whitespace 
    (
     \d+ #Match any set of digits 
     (\.\d+)? #Digits after decimal(optional) 
     | #Alternation(OR) 
     [a-z] #Match any character 
    ) 
)? #Make it optional 
$ #End of string 

、あなたは

^\w+(\s(\d+(\.\d+)?|[A-Za-z]))?$ 
0

^\w+(\s[a-z]|\s\d+(\.\d+)?)?$ 
0

別のパターンを使用することができます。

^(Test(?:$|\s(?:\d$|[a-z]$|\d{3}|\d\.\d$))) 

LIVE DEMO.

1

^\w+\s+((\d+\.\d+)|(\d+)|([^\d^\s]\w+))?\s*$ 
で試してみてください
+0

あなたはこれを説明できますか? – JordanHendrix

+0

\ w +は任意の英数字、\ s +任意の空白数、3つのオプショングループ(最初の数字は\ d + .d \ +)で、少なくとも1桁の小数点とその後の少なくとも1桁を強制できます。 2番目の数字は任意の桁数で、最後の数字は数字で始まる英数字BUTを除きます – impoetk