2012-08-29 60 views
1

這可能很簡單,但我不怎麼做。正則表達式javascript中的問號

我有這樣的正則表達式:

new RegExp("^[A-Za-z\\u00C0-\\u017F][\\- ]?+$"); 

它驗證一個名字。名字必須以一個字母開始(範圍是unicode並且工作正常),然後繼續使用字母或空格。但它可以只是字母,就像大多數名字一樣。

我已經搜查,但我沒有發現這樣做的正確方法。

我不想重複字符範圍。這只是讓代碼更「適當」。

如果你能幫助,它會提前

+0

你的表情說:「一個字母,然後任選任何一個破折號或一個空間」,那麼如果我理解正確的話,'+'是錯誤的語法,雖然JavaScript是經常寬容,所以......也許文字上的'+'? –

+1

如果你想要寫一個'(?:快|清潔|正確|高效)'正則表達式,閱讀(學習):精通正則表達式(第3版(http://www.amazon.com/Mastering-Regular -Expressions - 傑弗裏 - 弗裏德爾/ DP/1565922573),當談到學習正則表達式,沒有捷徑可走。 – ridgerunner

+0

謝謝ridgerunner – Emilie

回答

4

是巨大的:)

感謝現在你只允許一個字母,然後一個或多個破折號/空間。你可能想要

new RegExp("^[A-Za-z\\u00C0-\\u017F][A-Za-z\\u00C0-\\u017F -]*$"); 

但一般來說,試圖用正則表達式驗證名稱是不是這樣一個好主意。

+0

確實如此,但我不想重複字符範圍,它只是有。代碼更「正確」 – Emilie

+0

@ user1550752:但它不是複製 - 第二個不同於第一,除非你還想允許破折號或空格在名稱的開頭,還有周圍沒有辦法 –

+0

。是的,我知道,並且它對你的解決方案的效果很好,事實是我想用「?」來使用最簡潔的正則表達式,我知道有最簡單的方法,但我只想看看是否有可能使用「?」 。 – Emilie