【发布时间】:2012-11-30 20:57:07
【问题描述】:
我需要在 C# 中使用 Regex 在以下条件下匹配一个字符串:
- 整个字符串只能是字母数字(包括空格)。
- 不得超过 15 个字符(包括空格)。
- 首尾字符只能是字母。
- 一个空格可以在除字符串的第一个和最后一个字符之外的任何位置出现多次。 (不允许有多个空格)。
- 应该忽略大写。
- 应该匹配整个单词。
如果这些先决条件中的任何一个被破坏,则不应遵循匹配。
这是我目前拥有的:
^\b([A-z]{1})(([A-z0-9 ])*([A-z]{1}))?\b$
下面是一些应该匹配的测试字符串:
- 堆栈溢出
- 我是最伟大的
- 一个
- superman23s
- 一二三
还有一些不应该匹配的(注意空格):
- 堆栈 [double_space] 溢出岩石
- 23你好
- ThisIsOver15CharactersLong
- 你好23
- [space_here]嘿
等等
任何建议将不胜感激。
【问题讨论】:
-
你的正则表达式有什么问题?
-
问题是当我只希望它匹配一个时它匹配双空格。我分享所有不相关细节的唯一原因是因为我不希望我可能不正确的正则表达式给试图匹配我设定的条件的其他人带来负担。
-
您的第一个字符串如何匹配?超过 15 个字符