2012-10-23 93 views
1

我需要驗證包含一個數字(數字不能爲0或開頭爲零)的字符串或數字後跟在a-z或A-Z範圍內的單個字符。所以,這些都是有效的用於驗證數字和字符的正則表達式

2, 12, 1, 324534A, 2Y, 934d 

,但這些都是無效

000R, 0, 0D, D3, 23432dddd, 234Q343. 

有人能告訴我這樣做的正確的正則表達式表達?

+0

感謝Oded的格式整理。 –

+0

順便說一句 - 我建議學習正則表達式 - 它是一個有用的工具。掌握正則表達式是關於這個問題的最好的書。 – Oded

+0

只要我讀完了EF上的這本書,我就會看看Regex。 –

回答

3

這應該匹配。

^[1-9]\d*[a-zA-Z]?$ 

擊穿:

^   - Match start of string 
[1-9]  - Followed by one digit (1-9), no 0 
\d*   - Followed by any number of digits (can contain digits from 
       other cultures). If you want to constain use [0-9] instead of \d 
[a-zA-Z]? - Followed by either one character or none 
$   - Followed by end of string 
+0

@ t3hn00b - 正確。正在更新,因爲你正在評論。不清楚字符串中是否允許有'0',但看起來像是。 – Oded

3

^[1-9]\d*[a-zA-Z]?$應該這樣做。

  • [1-9] - 一個數字1-9
  • \d* - 可能的幾個數字0-9
  • [a-zA-Z]? - 可選的下/大寫字符(可能不包括重音等)
  • ^...$ - 將只匹配整個字符串,而不是子字符串。
+0

這會在'2'上失效,這是有效的。 – Oded

+0

我當然確實需要它來匹配整個字符串,我不想口音,所以只要這是正確的,這應該這樣做。 –

+0

@Oded謝謝,把我的'*'和'+'混合起來。我認爲現在好了。 – Rawling

相關問題