簡體   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