2016-11-25 4 views
2

Ищу регулярное выражение, чтобы соответствовать п нулей, а затем 1. например:Regex п 0, а затем 1

0000100 -> matches 
00200 -> does not math 

Я думал, что это было что-то вроде этого:

var regex = new Regex(@"[0]*[2-9]+"); 
+5

Вы регулярное выражение соответствует нулю или более 0, за которым следует одна или несколько цифр от 2 до 9. Это звучит как противоположность тому, что вы пытаетесь сделать – UnholySheep

+0

Где находится '1' в вашем регулярном выражении? – Heinzi

+1

Что вы подразумеваете под n нулями? Это определено или любое количество нулей? – Prajwal

ответ

2
решение

Linq (и не регулярное выражение):

string source = "0001"; 

bool isValid = source 
    .SkipWhile(c => c == '0') 
    .FirstOrDefault() == '1'; 

Если вы настаиваете на регулярное выражение:

bool isValid = Regex.IsMatch(source, "^0*1"); 

В обоих случаях нулевой или более 0 с последующим 1

4

^[0]+[1] является то, что вы хотите:

^ начало линии

[0] матч 0

+ по крайней мере один раз

[1] матч 1

Вы также можете добавить $ в конце концов, если вы хотите, чтобы соответствовать полной линии.

Примечание: если вы хотите, чтобы быть в состоянии соответствовать п = 0 (т.е. только 1), вам необходимо: ^[0]*[1]

Примечание: кронштейны [] являются необязательными, поскольку они содержат только один символ, но я думаю, они облегчают чтение. Таким образом, вы можете получить ^0+1, если хотите, например.

Смотрите также http://regexstorm.net/reference (например) для завершения C# регулярное выражение ссылки

+0

Я не думаю, что OP хочет, чтобы 1 был в конце строки (согласно предоставленному примеру для совпадений) – UnholySheep

+1

Почему нужно использовать '[]'? –

+0

@ UnholySheep только что заметил, что обновил мой ответ. Спасибо – simonalexander2005

0

Там нет необходимости в регулярном выражении здесь: левая подрезки строку из 0, и если оно не равно нулю или пуст, проверьте первый символ ,

var s = "00001"; 
if (!string.IsNullOrEmpty(s.TrimStart('0')) && 
    s.TrimStart('0').Substring(0, 1) == "1") 
{ 
    /* Valid, otherwise, not */ 
} 

Это будет работать, если у вас есть цифры в начале строки и нужно просто логический результат.

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