2012-11-08 167 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]*,因为它不是强制性的有一个空间。在我的情况下,邮政编码可能包含也可能不包含空格。

相关问题