繁体   English   中英

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

[英]In a RegEx I need to allow spaces only in middle and prevent spaces at beginning and end

我有一项要求,其中有以下要求来验证名称字段:

  1. 不允许使用以下符号: &(¥)*/+}{¿?¡_^ 〜¨¬;:@!“#&\\ |-'
  2. 不能包含数字
  3. 开头或结尾不能包含空格

我用下面的正则表达式:

^[^\\s0-9&(¥)*/+}\\\\{¿?¡_^~¨¬;:@!#&\"|-]*$

它满足所有条件,但同时也限制了字符串之间的空格。 例如:

限制格式:“名字姓氏”

我需要上面的格式。 我只需要限制开头和结尾的空格。

我假设它用于某种RegularExpressionAttribute验证中,并且您只想为此使用单个模式。

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

[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]

这匹配除集合中定义的字符以外的任何字符。 它与空格不匹配。 如果使用*量化并使用锚点进行换行,则字符串中的任何地方都不允许有空格。 因此,您只需要添加一个可选组(用*?{x,y}量化,具体取决于要允许的空格数):

^[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*$
                                        ^^^                                         ^^

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

^(?:[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
 ^^^                                                                                     ^^

根据需要转义反斜杠。

至于名称中的连字符:将其与空格放在同一位置可能是适当的:

^(?:[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:[\s-][^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
                                              ^^^^^

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM