![](/img/trans.png)
[英]Regex for matching a string with possible spaces at beginning and end of string with a hyphen in the middle
[英]In a RegEx I need to allow spaces only in middle and prevent spaces at beginning and end
我有一項要求,其中有以下要求來驗證名稱字段:
&(¥)*/+}{¿?¡_^
〜¨¬;:@!“#&\\ |-' 我用下面的正則表達式:
^[^\\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.