2013-02-05 44 views
2

在開始或結束時沒有空白的正則表達式,但允許中間空白,但也允許只有一個字符輸入:在開始或結束時沒有空白的正則表達式,但允許中間空白,但也只允許一個字符輸入:

我已經得到的最接近的是:^([^\s])([\sa-zA-Z0-9_\-]*)([^\s])$

這樣做的問題是,如果輸入的是三個或更多字符只會傳球,我需要它接受單個字符和通。 EG:

下應通過(使用「,便於閱讀,不串所需)

"A" 
"A B" 
"Hello There" 

下應該失敗

" A" 
"A " 
" A " 
" test" 

也需要只允許AZ,az或0- 9 - _雖然在外,中間部分增加空格但不在開始或結束

任何想法?

感謝

+2

'請還包括標籤指定編程語言或工具,你using.'(從'[正則表達式]'標籤說明) –

+0

對不起,也只需要允許AZ az 0-9 - _儘管出來,在中間部分增加了空格,但不在開始或結束 – user959423

回答

9

非空格,任選隨後進行的空間的多個組,則非空格:

^[^\s]+(\s+[^\s]+)*$ 

編輯:

要包括字符限制,只需更換非空間類與允許的字符:

^[-_a-zA-Z0-9]+(\s+[-_a-zA-Z0-9]+)*$ 

此外,考慮是Unicode友好和使用somet hing like

^[-_\p{Alnum}]+(\s+[-_\p{Alnum}]+)*$ 

(假設你的正則表達式解釋器允許它)。

+0

對不起,我錯過了它也只需要允許AZ az 0-9 - _儘管在中間部分增加空格,但不在開始或結束 – user959423

+0

偉大的:-)這沒有把戲。謝謝 – user959423

+0

你能解釋一下這實際上是什麼意思嗎? ^ [-_ a-zA-Z0-9] +(\ s + [-_ a-zA-Z0-9] +)* $ – user959423

1

使所有的第一個非空格字符後可選:

^(?=\S)[a-zA-Z0-9_\s-]*\S$ 
+0

這允許你輸入任何字符作爲第一個字符,它應該限制在a-zA-Z0-9 – user959423

+0

那麼你沒有這麼說,是嗎?編輯。 –

+0

對不起,我錯過了init文章。在最後一刻編輯 – user959423

相關問題