正则表达式匹配最多五个单词

时间:2010-04-09 06:42:16

标签: asp.net regex

我有一个正则表达式

^[a-zA-Z+#-.0-9]{1,5}$

验证该单词包含字母数字字符,少数特殊字符和长度不得超过5个字符。

如何使这个正则表达式最多接受与上述正则表达式匹配的五个单词。

3 个答案:

答案 0 :(得分:2)

^[a-zA-Z+#\-.0-9]{1,5}(\s[a-zA-Z+#\-.0-9]{1,5}){0,4}$

此外,如果您只想接受空格,而不是制表符和换行符,则可以使用[ ]代替\s。您可以为任意数量的空格(或空格)编写[ ]+(或\s+),而不只是一个。

修改:删除了无效的解决方案并修复了unicornaddict提到的错误。

答案 1 :(得分:2)

我相信这可能是你正在寻找的。它强制至少一个你想要的模式的单词,然后是0到4个相同的单词,每个单词前面都有一个或多个空白字符:

^XX(\s+XX){0,4}$

其中XX是您实际的单字正则表达式。

它分为两个不同的部分,因此您不需要在字符串的末尾添加空格。

答案 2 :(得分:1)

你的正则表达式有一个小bug。它匹配字母,数字,+#period但不匹配hyphen以及#period之间的所有字符。这是因为在两侧包围的char类中的hyphen充当范围元字符。为避免这种情况,您必须逃避hyphen

^[a-zA-Z+#\-.0-9]{1,5}$

或者把它放在char类的beg / end,以便对它进行字面处理:

^[-a-zA-Z+#-.0-9]{1,5}$
^[a-zA-Z+#.0-9-]{1,5}$

现在要匹配最多5个这样的单词,您可以使用:

^(?:[a-zA-Z+#\-.0-9]{1,5}\s+){1,5}$

编辑:此解决方案严重限制只匹配那些以空格结尾的输入!要克服这个限制,你可以看到雅各布的答案。

相关问题