4

我需要一个 4 个字符的正则表达式。前 3 个字符必须是数字,后 1 个字符必须是字母或数字。

我形成了这个,但它不起作用

^([0-9]{3}+(([a-zA-Z]*)|([0-9]*)))?$

一些有效匹配:889A, 777B,8883

4

3 回答 3

11

I need a regular expression for first 3 will be a number and the last 1 will be a alphabet or digit

这个正则表达式应该工作:

^[0-9]{3}[a-zA-Z0-9]$

这假设字符串的长度只有 4 个字符。如果不是这种情况,请删除行尾锚$并使用:

^[0-9]{3}[a-zA-Z0-9]
于 2013-10-28T09:53:40.680 回答
9

尝试这个

这将在任何地方匹配它。

\d{3}[a-zA-Z0-9]

这将仅匹配字符串的开头

^\d{3}[a-zA-Z0-9]

你也可以试试这个网站: http: //gskinner.com/RegExr/

它使创建和测试您的正则表达式变得非常容易。

于 2013-10-28T09:54:58.747 回答
2

把星星拿出来...

^([0-9]{3}+(([a-zA-Z])|([0-9])))?$

星星意味着它之前的零个或多个东西。您已经在使用 or ( |) ,因此您希望完全匹配一个类或另一个类,而不是该类的零个或多个,或者另一个类的零个或多个。

当然,还可以进一步简化:

^\d{3}[a-zA-Z\d]$

字面意思是......三个数字,后跟一个小写或大写 az 或任何数字的字符。

于 2013-10-28T10:00:14.350 回答