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

时间:2012-11-08 06:10:06

标签: javascript jquery regex

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

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

提前致谢。

8 个答案:

答案 0 :(得分:66)

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 alpha。不幸的是,大多数浏览器中的正则表达式引擎都不支持命名字符集but there are some libraries to help with that

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

答案 1 :(得分:41)

试试这个正则表达式:

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

答案 2 :(得分:9)

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

\ w 匹配字母数字下划线

\ s 匹配空格标签换行符

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

答案 3 :(得分:6)

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

答案 4 :(得分:3)

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;
            }
在regExp [A-Za-z0-9?spaceHere,_-]

在问号“?”后面有一个文字空格。这符合空间。像/^[-\w\s]+$//^[a-z\d\-_\s]+$/i这样的其他人并不适合我。

答案 5 :(得分:0)

对我来说,我想要一个支持前面的字符串的正则表达式。基本上,动机是支持一些外国邮政格式,因为它应该是一个允许空格的字母数字。

  1. ABC123
  2. ABC 123
  3. ABC123(空格)
  4. ABC 123(空间)
  5. 所以我最后编写了自定义正则表达式,如下所示。

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

    enter image description here

    在这里,我在[\s]*中给了*,因为没有空格。在我的情况下,邮政编码可能包含也可能不包含空格。

答案 6 :(得分:0)

尝试此正则表达式

*更新的正则表达式

/^[a-z0-9]+([-_\s]{1}[a-z0-9]+)*$/i

这将在文本之间仅允许一个空格或-或_

Ex: this-some abc123_regex

要学习:https://regexr.com

*注意:我已根据Toto问题更新了正则表达式

答案 7 :(得分:0)

遵循两者对我有用。

/[^a-zA-Z0-9\-_\s]/g
/[^a-z\d\-_\s]+$/i

可以像这样用空替换除字母数字、-、_以外的其他字符。

inputString.replace(/[^a-zA-Z0-9\-_\s]/g,"");