我要尋找一個正則表達式匹配n個零,然後在1 例如:正則表達式N 0再1
0000100 -> matches
00200 -> does not math
我以爲這是類似的東西:
var regex = new Regex(@"[0]*[2-9]+");
我要尋找一個正則表達式匹配n個零,然後在1 例如:正則表達式N 0再1
0000100 -> matches
00200 -> does not math
我以爲這是類似的東西:
var regex = new Regex(@"[0]*[2-9]+");
的LINQ解決方案(沒有正則表達式):
string source = "0001";
bool isValid = source
.SkipWhile(c => c == '0')
.FirstOrDefault() == '1';
如果你堅持的正則表達式:
bool isValid = Regex.IsMatch(source, "^0*1");
在這兩種情況下零以上0
之後1
^[0]+[1]
是你想要什麼:
^
線開始
[0]
匹配0
+
至少一次
[1]
比賽1
你也可以在最後加一個$
,如果你想匹配的完整產品線。
注意:如果你想能夠匹配n = 0時(即只是1),你需要: ^[0]*[1]
注:括號[]
是可選的,因爲它們只包含一個字,但我認爲他們使閱讀更容易。例如,如果您願意,您可以使用^0+1
。
參見http://regexstorm.net/reference(例如)一個完整的C#正則表達式參考
我不認爲OP希望1在行尾(根據提供的匹配示例) – UnholySheep
爲什麼必須使用'[]'? –
@UnholySheep剛剛注意到,更新了我的答案。謝謝 – simonalexander2005
沒有必要正則表達式的位置:從0
左修剪字符串,如果它不爲空或空,檢查的第一個字符。
var s = "00001";
if (!string.IsNullOrEmpty(s.TrimStart('0')) &&
s.TrimStart('0').Substring(0, 1) == "1")
{
/* Valid, otherwise, not */
}
如果你有在字符串開頭的數字,只是需要一個布爾結果,這將工作。
你正則表達式匹配零個或多個0,後跟一個或多個從2到9的任意一個數字。這聽起來像是你想要做的相反 – UnholySheep
你的正則表達式中的'1'在哪裏? – Heinzi
你是什麼意思的n零?是定義的還是任意數量的零? – Prajwal