2017-03-04 177 views
-2

我真的很陌生,所以我正在尋找一種方法來檢查我的字符串是否以某個正則表達式開始。我在互聯網上發現了this,但是,我無法使它與自定義正則表達式一起工作。檢查字符串是否以正則表達式開始

我需要知道,如果一個特定的符合

3.3. XXX 

開始這就是你如何格式化德國日期。所以,正則表達式並不需要查找僅這一點,但可能

17.4. XXX 

在這兩種情況下,我需要知道,如果輸入的字符串與日期開始(其中有兩個可能的符號,如上文所述) 。因此,對於這兩種情況它都會返回true,但是,它不會爲此:

15G 

(例如)。

哪個正則表達式適合這樣做?

+0

你嘗試過這樣一個有效的日期遠? – revo

+1

如果您打算解析日期,那麼最好使用[Parse](https://msdn.microsoft.com/en-us/library/1k1skd40(v = vs.110).aspx)或其[overload] (https://msdn.microsoft.com/en-us/library/kc8s65zs(v=vs.110).aspx)。 – cassandrad

+0

爲什麼你說這是一個*時間*,但最後說,字符串以* date *開頭? –

回答

1

正則表達式是不擅長解析數範圍,使得它可以得到相當混亂https://stackoverflow.com/a/15504877/1383168

要檢查一個字符串是否是你可以使用DateTime.TryParseExact

string s = "17.4. XXX"; DateTime d; 

if (DateTime.TryParseExact(s.Split(' ')[0], "d.M.", 
    System.Globalization.CultureInfo.InvariantCulture, 
    System.Globalization.DateTimeStyles.None, out d)) 
{ 
    // matches 
    Debug.Print($"{d}"); // "4/17/2017 12:00:00 AM" 
} 
+0

非常好的和乾淨的解決方案,適用於所有的日期,並不需要手動正則表達式檢查。謝謝! –

1

如果你想要一個正則表達式來檢測dd.mm類型的日期這就是你的答案。

string testregex = "([0-2][0-9]|3[0-1]|[0-9])(.)(0[1-9]|1[0-2]|[0-9])(.)"; 

您可以檢查任何字符串找到匹配這個表達式,Regex.IsMatch()返回true,並且在有塊將執行語句。

string text="17.4 xxxxxx"; 
if (Regex.IsMatch(string test,testregex)) 
{ 
    //do something 
} 
+1

「'給我更多明確的評論細節」。不要這樣做,請儘量使用所有相關詳細信息和示例更新您的問題。 **當然,每個正則表達式問題至少應該包含幾個應該通過的例子,哪些應該失敗,以及爲什麼**。在更新問題之後,回答問題已更新的答案也很好。 –

+0

我可以看到你放上'17.4',但不是'17.4.',這是必需的。正如我所看到的,在正則表達式的末尾丟失了點(。)。你打算這麼做嗎?無論如何感謝您的回答。 –

+0

總是有一個點(。)在目標字符串的末尾?如果是,請通知我,然後在我的答案中編輯正則表達式。 –

相關問題