我需要在C#中使用
Regex在以下条件下匹配字符串:
>整个字符串只能是字母数字(包括空格).
>最多不超过15个字符(包括空格).
>第一&最后一个字符只能是一个字母.
>单个空格可以在任何地方多次出现,但字符串的第一个和最后一个字符. (不应允许多个空格在一起).
>应忽略资本化.
>应匹配整个单词.
如果这些先决条件中的任何一个被破坏,则不应该进行匹配.
这是我目前拥有的:
^\b([A-z]{1})(([A-z0-9 ])*([A-z]{1}))?\b$
以下是一些应该匹配的测试字符串:
> Stack OverFlow
>我最大的
> A.
>超人23
>一二三
还有一些不应该匹配(注意空格):
> Stack [double_space]溢出岩石
> 23你好
> ThisIsOver15CharactersLong
>你好23
> [space_here]嘿
等等
任何建议将不胜感激.
解决方法
你应该使用前瞻
|->matches if all the lookaheads are true -- ^(?=[a-zA-Z]([a-zA-Z\d\s]+[a-zA-Z])?$)(?=.{1,15}$)(?!.*\s{2,}).*$ -------------------------------------- ---------- ---------- | | |->checks if there are no two or more space occuring | |->checks if the string is between 1 to 15 chars |->checks if the string starts with alphabet followed by 1 to many requireds chars and that ends with a char that is not space
你可以尝试here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。