2011-03-29 68 views
2

我有一個正則表達式^(?=.*?[A-Za-z])\S*$,它指示輸入應該包含字母,並且可以包含特殊字符或數字以及字母。但是因爲我使用了\ S,所以它不允許有空格。使用javascript的正則表達式

有人建議我一個reg EXP它應該包含字母,它可以包含數字或特殊字符和空格,但字母是必須的最後一個字符不能用空格結尾

回答

4

很簡單:

^(?=.*?[A-Za-z]).*$ 

請注意,在JavaScript中.與新行不匹配,並且沒有點全部標誌(/s)。您可以使用類似[\s\S],而是如果這是一個問題:

^(?=[\s\S]*?[A-Za-z])[\s\S]*$ 

既然你只有一個前瞻,可以簡化模式:

^.*[A-Za-z].*$ 

甚至更​​簡單:

[A-Za-z] 

[A-Za-z]將匹配,如果它在字符串中的任何位置找到一個字母,你不需要從頭到尾搜索其餘的。


要還驗證了最後一個字符不是一個空白,它可能比較容易再次使用前瞻(因爲它基本上意味着AND在正則表達式:

^(?=.*?[A-Za-z]).*\S$ 
+0

[A-ZA-Z ]的作品,但我也需要檢查,以便最後一個字符不是空格 – user475685 2011-03-29 09:40:54

+0

@User - 在每個模式結尾處的'。* \ S $'可以驗證:'[A-Za-z]。* \ S $',例如,你可以編輯這個問題來添加這個需求嗎? – Kobi 2011-03-29 09:42:54

+0

非常感謝你 – user475685 2011-03-29 09:44:46