2010-10-06 20 views
0

也許這是一個非常罕見的(甚至是愚蠢的)問題,但我確實需要它在我的應用程序中。如何檢查C#正則表達式是否嘗試匹配1-(只有-1)個字符串?

如何檢查C#正則表達式是否試圖匹配單字符字符串?

這意味着,我只允許用戶搜索1個字符的字符串。如果用戶嘗試搜索多字符字符串,則會向用戶顯示錯誤消息。

我讓自己清楚了嗎?

謝謝。

彼得

P.S:我看到了有關計算最終匹配的字符串長度的答案,但不知什麼原因,得到的答案也沒有了。 我想了一會兒,我認爲計算最終匹配的字符串長度是可以的,雖然它會有點慢。然而,原來的問題非常罕見和乏味。

+0

你能舉一個你想要的例子嗎?舉一個搜索的例子。 – skyfoot 2010-10-06 07:57:26

回答

0

而不是驗證正則表達式,這可能很複雜,您可以將它應用於單個字符而不是整個字符串。

如果這是不可能的,你可能想限制正則表達式對某些特徵的可能性。例如,用戶只能輸入要匹配的字符或要排除的字符。然後,在代碼中構建正則表達式。

如:

  • ABC比賽[ABC]
  • ^ABC比賽[^ABC]
  • A-Z比賽[A-Z]
  • #比賽[0-9]
  • \w比賽\w
  • AB#x-z比賽[AB]|[0-9]|[x-z]|\w
  • 哪種情況下需要支持?

這將有點容易解析和驗證。

+0

感謝您的回覆。對於僅英文字符,您的解決方案可能沒問題。但我正在用一堆符號,英文/日文字母等來處理亞洲/中文文本。 – 2010-10-06 07:53:59

+0

您可以使用此字符輕鬆擴展語法。 – 2010-10-06 08:27:28

+0

它變得太複雜了,嘗試將正則表達式應用於單個字符,如第一段中所述。 – 2010-10-06 08:29:06

1

正則表達式將是.{1} 這將允許任何字符儘管。如果您只想要英文數字,​​那麼您可以使用[a-z0-9]{1}或速記/w{1}

另一種選擇是限制用戶可以在輸入字段中輸入的字符數。設置一個最大長度。

另一種選擇是將表單輸入字段保存爲字符而不是字符串,儘管您可能需要對此進行一些處理以防止出現錯誤。

爲什麼不使用maxlength並保存到字符。

+0

。?將匹配0-1長度的字符串。 – 2010-10-06 07:47:26

+0

有這麼多的可能性:例如「[a_z]」或「\ P {groupName}」 – 2010-10-06 07:48:34

+0

@anand哦是啊,編輯我的帖子。 – skyfoot 2010-10-06 07:51:24

1

你可以找轉義*+{}?等和計數的字符數(別忘了扁平化[]一個字符)。

基本上你必須解析你的正則表達式。

+0

感謝您的回覆。但我沒有得到它。我不是在談論正則表達式本身的長度,而是在談論最終結果字符串的長度應該總是一個。 – 2010-10-06 07:51:48

+0

純文字怎麼樣?例如'ABC'將匹配三個字符的字符串,而[ABC]將是有效的。 – 2010-10-06 07:54:46

+0

@Stefan Steinegger,這就是爲什麼他需要計算字符數的原因;) – 2010-10-06 07:56:11

相關問題