在 RegEx 中,我只需要在中间允许空格并防止在开头和结尾有空格
In a RegEx I need to allow spaces only in middle and prevent spaces at beginning and end
我有一个要求,其中我有以下要求来验证名称字段:
- 不允许使用以下符号:
&(¥)*/+}{¿?¡_^
~¨¬;:@!"#&\|-'
- 不能包含数字
- 开头或结尾不能包含空格
我使用了以下正则表达式:
^[^\s0-9&(¥)*/+}\\{¿?¡_^~¨¬;:@!#&\"|-]*$
它满足了所有条件,但也限制了字符串之间的空格。例如:
限制格式:"firstname lastname"
我需要允许使用上述格式。我只需要限制开头和结尾的空格。
我假设它用于某种 RegularExpressionAttribute 验证,而您只想为此使用单一模式。
您已经有了第一个积木:
[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]
这与集合中定义的字符以外的任何字符匹配。它不匹配空格。如果你用 *
量化并用锚点包裹,则字符串中的任何地方都不允许有空格。因此,您只需要添加一个可选组(使用 *
或 ?
或 {x,y}
进行量化,具体取决于您要允许的空格数):
^[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+)*$
^^^ ^^
如果你还想匹配一个空字符串,用一个可选的非捕获组包装模式:
^(?:[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
^^^ ^^
根据需要转义反斜杠。
至于名称中的连字符:允许它与空格放在同一位置可能是合适的:
^(?:[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:[\s-][^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
^^^^^
我有一个要求,其中我有以下要求来验证名称字段:
- 不允许使用以下符号:
&(¥)*/+}{¿?¡_^
~¨¬;:@!"#&\|-' - 不能包含数字
- 开头或结尾不能包含空格
我使用了以下正则表达式:
^[^\s0-9&(¥)*/+}\\{¿?¡_^~¨¬;:@!#&\"|-]*$
它满足了所有条件,但也限制了字符串之间的空格。例如:
限制格式:"firstname lastname"
我需要允许使用上述格式。我只需要限制开头和结尾的空格。
我假设它用于某种 RegularExpressionAttribute 验证,而您只想为此使用单一模式。
您已经有了第一个积木:
[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]
这与集合中定义的字符以外的任何字符匹配。它不匹配空格。如果你用 *
量化并用锚点包裹,则字符串中的任何地方都不允许有空格。因此,您只需要添加一个可选组(使用 *
或 ?
或 {x,y}
进行量化,具体取决于您要允许的空格数):
^[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+)*$
^^^ ^^
如果你还想匹配一个空字符串,用一个可选的非捕获组包装模式:
^(?:[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:\s[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
^^^ ^^
根据需要转义反斜杠。
至于名称中的连字符:允许它与空格放在同一位置可能是合适的:
^(?:[^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+(?:[\s-][^\s0-9&(¥)*/+}\{¿?¡_^`~¨¬;:@!#&\"|-]+)*)?$
^^^^^