我有一个要求,其中我有下面的要求来验证一个name字段:
&(¥)*/+}{¿?¡_^~孢子粉:@!我使用了下面的regex:
^[^\\s0-9&(¥)*/+}\\\\{¿?¡_^~¨¬;:@!#&\"|-]*$它正在满足所有条件,但也限制了字符串之间的空格。前任:
它限制格式:“名姓”。
我需要上述格式是允许的。我只需要限制开始和结束的空格。
发布于 2017-05-23 07:34:06
我假设它在某种形式的RegularExpressionAttribute验证中使用,而您只想为此使用一个模式。
您已经有了第一个构建块:
[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]这与任何字符匹配,但与集合中定义的字符匹配。它与空格不匹配。如果使用*进行量化并使用锚包,则不允许在字符串中的任何位置使用空白。因此,您只需要添加一个可选组(根据您希望允许的空格数,使用*、?或{x,y}进行量化):
^[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*$
^^^ ^^如果还想匹配空字符串,请使用可选的非捕获组包装模式:
^(?:[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
^^^ ^^根据需要避免反斜杠。
至于名称中的连字符:允许它在与空格相同的位置进行可能是适当的:
^(?:[^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:[\s-][^\s0-9&(¥)*/+}\\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
^^^^^https://stackoverflow.com/questions/44128099
复制相似问题