2012-11-08 175 views
20

嗨,我正在尋找正則表達式來允許在javascript/jquery中使用字母數字, - ,_或空格。我厭倦了谷歌搜索,但沒能找到,允許字母數字, - ,_和空格的正則表達式

任何人都可以幫助我與此。

在此先感謝。

+0

嘗試'/ [a-z \ d \ -_ \ s] +/i'。但你可能想要_learn_正則表達式。你不能在網上找到他們,特別是如果它不常見。 – elclanrs

+0

是的,我很虛弱 – rahul

+0

@elclanrs不適合我 – rahul

回答

29

試試這個正則表達式:

/^[a-z\d\-_\s]+$/i 
+2

@rahul:這個方法可行,但是要檢查Nevir的答案,因爲它也可以工作,而且有點短。基本上'\ w'表示alpha +下劃線,它只是一個類似'\ d'的快捷方式''[0-9]'。 – elclanrs

6
var string = 'test- _ 0Test'; 
string.match(/^[-_ a-zA-Z0-9]+$/) 
53

Character sets會在這裏幫上忙。你想創建一個匹配的,你要驗證的人物設定:

  • 可以匹配字母與\w,這是相同的JavaScript [A-Za-z0-9_](其它語言可以不同)。
  • 這留下了-和空格,它們可以組合成匹配​​集合,例如[\w\- ]。但是,您可能只想要空格字符的考慮使用\s代替(\s也匹配的標籤,及其他形式的空格)
    • 請注意,我逃避-\-,使得正則表達式引擎不用字符範圍混淆像A-Z
  • 最後,你可能想確保整個字符串by anchoring開頭匹配,並通過^$
  • 結束

你可能尋找的全正則表達式是:

/^[\w\-\s]+$/ 

(注意the + indicates必須有至少爲它匹配一個字符;使用*代替,如果一個零長度的字符串也行)

最後,http://www.regular-expressions.info/是一個真棒參考


積分:此正則表達式匹配非ASCII阿爾法。不幸的是,大多數瀏覽器中的正則表達式引擎不支持命名字符集,but there are some libraries to help with that

對於語言/平臺,做命名的字符集的支持,您可以使用/^[\p{Letter}\d\_\-\s]+$/

+1

這比我的答案更好,因爲'[az [0-9] _]/i'與'\ w'相同 – elclanrs

8
/^[-\w\s]+$/ 

\ W比賽字母數字,和下劃線

\ S比賽空間標籤換行符

-連字符匹配(如果你有連字符的字符集,例如[AZ],一定要放置連字符在像這樣[-az]開始)

2
var regex = new RegExp("^[A-Za-z0-9? ,_-]+$"); 
      var key = String.fromCharCode(event.charCode ? event.which : event.charCode); 
      if (!regex.test(key)) { 
       event.preventDefault(); 
       return false; 
      } 

在正規表達式[A-Za-z0-9?spaceHere,_-]有我這是問號'?'後的字面空格。這匹配空間。其他人喜歡/^[-\w\s]+$//^[a-z\d\-_\s]+$/i不適合我。

+0

這允許基本需要特殊字符「」,?,:,....並阻止其他人。謝謝 – Rigin

0

對我來說,我想要一個正則表達式,它支持前面的字符串。基本上,動機是支持一些外國的郵政格式,因爲它應該是一個字母數字,並且允許有空格。

  1. ABC123
  2. ABC 123
  3. ABC123(空間)
  4. ABC 123(空間)

所以我最終通過如下編寫定製的正則表達式。

/^([a-z]+[\s]*[0-9]+[\s]*)+$/i 

enter image description here

在這裏,我給*在[\s]*,因爲它不是強制性的有一個空間。在我的情況下,郵政編碼可能包含也可能不包含空格。

相關問題