正则表达式允许使用字母数字, - ,_和空格

rah*_*hul 29 javascript regex jquery

我正在寻找一个正则表达式,允许在JavaScript/jQuery中使用字母数字字符, - ,_或空格.我尝试了谷歌搜索,但无法找到.

任何人都可以帮我解决这个问题吗?

提前致谢.

Nev*_*vir 70

字符集在这里有所帮助.您想为要验证的字符创建匹配集:

  • 您可以将字母数字与a匹配\w,这与[A-Za-z0-9_]JavaScript中的相同(其他语言可以不同).
  • 离开-和空格,可以组合成匹配​​的集合,如[\w\- ].但是,您可能需要考虑使用\s而不仅仅是空格字符(\s也匹配制表符和其他形式的空格)
    • 请注意,我逃避-\-,这样的正则表达式引擎不会有字符范围像混淆A-Z
  • 最后,您可能希望通过和来锚定起始和结束来确保整个字符串匹配^$

您可能正在寻找的完整正则表达式是:

/^[\w\-\s]+$/
Run Code Online (Sandbox Code Playgroud)

(请注意,+指示,必须有至少一个字符为它匹配;使用*相反,如果一个零长度的字符串也行)

最后,http://www.regular-expressions.info/是一个很棒的参考


加分点: 此正则表达式与非ASCII alpha 匹配.不幸的是,大多数浏览器中的正则表达式引擎都不支持命名字符集,但有一些库可以帮助解决这个问题.

对于支持命名字符集的语言/平台,您可以使用 /^[\p{Letter}\d\_\-\s]+$/

  • 这比我的回答要好,因为`[az [0-9] _]/i`与`\ w`相同 (2认同)

elc*_*nrs 45

试试这个正则表达式:

/^[a-z\d\-_\s]+$/i
Run Code Online (Sandbox Code Playgroud)

  • @rahul:这可行,但检查Nevir的答案,因为它也应该工作,它有点短.基本上`\ w`表示alpha +下划线,它只是一个像`\ d`这样的快捷方式,意思是`[0-9]`. (3认同)

cba*_*ram 10

/^[-\w\s]+$/
Run Code Online (Sandbox Code Playgroud)

\ w匹配字母,数字下划线

\ s匹配空格,制表符换行符

- 匹配连字符(如果你的字符集示例[az]中有连字符,请务必将连字符放在开头,如此[-az])


nka*_*amm 7

var string = 'test- _ 0Test';
string.match(/^[-_ a-zA-Z0-9]+$/)
Run Code Online (Sandbox Code Playgroud)