2016-04-15 2 views
2

мне нужен Regex, который соответствует этим Струны:Regex "символов Числа"

Тест 1
Test 123
Test 1.1 (не требуется, но будет аккуратным)
Тест
Тест A

Но не следующее:
Тест 1a

Я не знаю, как этот шаблон должен выглядеть так, как он позволяет текст или пробел в конце, но не если есть число раньше.

Я попытался это один ^.*([0-9])$ (соответствует только Test 1, но, например, не Test или Test a) и это один ^.*[0-9].$ (соответствует только Test 1a, но, например, не Test или Test 1) , но они не совпадают, что Мне нужно.

+0

Слишком неясно. Каковы спецификации? Попробуйте ['^ \ w + (?: \ S + (?: \ D + (\. \ D +)? \ P {L} +))? $'] (Http://regexstorm.net/tester?p=% 5e% 5cw% 2b (% 3f% 3a% 5cs% 2b (% 3f% 3a% 5CD% 2b (% 5с.% 5CD% 2b)% 3f% 7c% 5cp% 7bL% 7d% 2b))% 3f% 5cr % 3f% 24 & я = Тест + 1% 0d% 0aTest + 123% 0d% 0aTest + 1,1% 0d% 0aTest% 0d% 0aTest + а% 0D% 0A% 0D% 0aTest + 1a и о = м). –

+0

У меня будет слишком много возможностей и исключений..https: //regex101.com/r/pC5wN5/3 работает только сейчас, но я подозреваю, что это не удастся во многих местах. – rock321987

+0

Чтобы сделать это более понятным: 'Test' является заполнителем для любого текста. @ rock321987 ваш - это то, что я искал, за исключением заполнителя. –

ответ

1

Это работает для всех случаев при условии

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

Regex Demo

Regex Разбивка

^ #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 \ +), заставляя по крайней мере одну цифру десятичную точку и по меньшей мере одну цифру после нее, второе - любое количество цифр, и, наконец, последний будет содержать буквенно-цифровой символ, но исключая те, которые начинаются с цифры – impoetk

Смежные вопросы