首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在RegEx中,我需要只允许中间的空格,防止开头和结尾的空格。

在RegEx中,我需要只允许中间的空格,防止开头和结尾的空格。
EN

Stack Overflow用户
提问于 2017-05-23 07:14:21
回答 1查看 577关注 0票数 2

我有一个要求,其中我有下面的要求来验证一个name字段:

  1. 不允许使用以下符号:&(¥)*/+}{¿?¡_^~孢子粉:@!
  2. 不能包含数字
  3. 不能在开头或结尾处包含空格

我使用了下面的regex:

代码语言:javascript
运行
复制
^[^\\s0-9&(¥)*/+}\\\\{¿?¡_^~¨¬;:@!#&\"|-]*$

它正在满足所有条件,但也限制了字符串之间的空格。前任:

它限制格式:“名姓”。

我需要上述格式是允许的。我只需要限制开始和结束的空格。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-23 07:34:06

我假设它在某种形式的RegularExpressionAttribute验证中使用,而您只想为此使用一个模式。

您已经有了第一个构建块:

代码语言:javascript
运行
复制
[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]

这与任何字符匹配,但与集合中定义的字符匹配。它与空格不匹配。如果使用*进行量化并使用锚包,则不允许在字符串中的任何位置使用空白。因此,您只需要添加一个可选组(根据您希望允许的空格数,使用*?{x,y}进行量化):

代码语言:javascript
运行
复制
^[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*$
                                        ^^^                                         ^^

如果还想匹配空字符串,请使用可选的非捕获组包装模式:

代码语言:javascript
运行
复制
^(?:[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
 ^^^                                                                                     ^^

根据需要避免反斜杠。

至于名称中的连字符:允许它在与空格相同的位置进行可能是适当的:

代码语言:javascript
运行
复制
^(?:[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:[\s-][^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
                                              ^^^^^
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44128099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档