0

我只是不太擅长正则表达式,而且我无法找到接近我需要的东西的例子。在此先感谢您的帮助。这是一个搜索输入框,如果用户已经知道它是数字或数字+字母序列,它将直接将用户带到他们正在寻找的内容

它必须以数字开头,数字可以是 1 到多位数字,数字后面的字母可以是 0、1 或 2 位数字。

通过示例:1 12 123456 123a 1234ab 123456789ab

失败示例:a ab a1 ab12 1abc 123abc 1-a 1_a

你明白了。对于传递的字符串,我还需要将数字与字母分开。

再次感谢。

语言是c#。我需要测试传入的字符串,然后如果它通过正则表达式,则将其拆分为数字和字母部分。

4

5 回答 5

3

尝试

[0-9]+[a-z]{0,2}

希望这可以帮助。

于 2012-05-25T20:10:22.600 回答
2

试试这个

var regex=new Regex("^(?<numbers>[0-9]+)(?<letters>[a-z]{0,2})$",RegexOptions.IgnoreCase);
var match=regex.Match(testString);

属性match.Success告诉你是否成功并且可以获取值

var numbers=match.groups["numbers"].Value;

var letters=match.groups["letters"].Value;
于 2012-05-25T20:26:05.650 回答
1

这应该有效:

/([0-9]+)([a-z]{0,2})/

根据您使用此正则表达式的语言,获取完整模式匹配和后续子模式匹配的方法可能会有所不同。

编辑:

修改了第二个子模式以不匹配任何字母,或最多匹配 2 个字母。

于 2012-05-25T20:09:43.603 回答
1

/([0-9]+)([a-zA-Z]{0,2})/首都...

于 2012-05-25T20:17:09.963 回答
0

给出的所有答案仍然与失败列表中的 1-a 匹配,所以这是我的补充:

\b([0-9]+)([a-z]{0,2})(?!-)\b

测试:1 12 123456 123a 1234ab 123456789ab a ab a1 ab12 1abc 123abc 1-a 1_a

匹配:1 12 123456 123a 1234ab 123456789ab

于 2012-05-25T20:30:08.620 回答