2012-10-23 92 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

相关问题