我需要验证一个包含数字的字符串(数字不能为0或在开头有零)或一个数字后跟a-z或A-Z范围内的单个字符。所以,这些都是有效的
2, 12, 1, 324534A, 2Y, 934d
但这些都是无效的
000R, 0, 0D, D3, 23432dddd, 234Q343.
有人能告诉我正确的正则表达式吗?
答案 0 :(得分: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
答案 1 :(得分:3)
^[1-9]\d*[a-zA-Z]?$
应该这样做。
[1-9]
- 一位数1-9 \d*
- 可能是几位0-9 [a-zA-Z]?
- 可选的小写/大写字符(可能不包括重音等)^...$
- 只匹配整个字符串,而不是子字符串。