正则表达式:允许字母,数字和空格(至少包含一个字母或数字)

时间:2009-02-23 00:43:54

标签: javascript regex

我目前正在使用此正则表达式^[A-Z0-9 _]*$来接受字母,数字,空格和下划线。我需要修改它以在字符串中的某处需要至少一个数字或字母。任何帮助将不胜感激!

这将用于验证我网站的用户名。我实际上想支持尽可能多的字符,但只是想确保我阻止代码注入,并且字符对所有用户都显示正常。因此,我绝对愿意接受支持更广泛字符集的正则表达式验证建议。

8 个答案:

答案 0 :(得分:55)

您只需要指定当前的RE,然后再输入一个字母/数字,然后再显示当前的RE:

^[A-Z0-9 _]*[A-Z0-9][A-Z0-9 _]*$

由于您现在声明它们是Javascript RE,因此有一个有用的网站here,您可以根据输入数据测试RE。

如果你想要小写字母:

^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$

答案 1 :(得分:13)

继续前进并在那里得到一个观点,而不是重复使用它们:

[A-Za-z0-9 _]
[A-Za-z0-9]

我有两个(希望更好)替换这两个:

[\w ]
[^\W_]

第一个匹配任何单词字符(字母数字和_,以及Unicode)和空格。第二个匹配任何不是非单词字符或下划线(仅限字母数字,以及Unicode)。

如果您不想进行Unicode匹配,请坚持使用其他答案。但这些看起来更容易(在我看来)。在撰写本文时采用“首选”答案并使用较短的正则表达式给出了我们:

^[\w ]*[^\W_][\w ]*$

也许更具可读性,也许更少。当然更短。你的选择。

编辑:

就像说明一样,我在这里假设Perl风格的正则表达式。您的正则表达式引擎可能支持也可能不支持\ w和\ W。

之类的内容

编辑2:

使用JS regex测试程序测试了我的链接,并且一些基本示例工作得很好。没有做任何广泛的事情,只是想确保\ w和\ W在JS中运行良好。

编辑3:

尝试使用JS regex测试站点测试某些Unicode,我发现了问题:该页面使用ISO而不是Unicode。难怪我的日语输入不匹配。哦,这应该不难解决:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

或者是这样。我不知道在JavaScript方面应该做些什么,但我确信这并不难。

答案 2 :(得分:9)

^[ _]*[A-Z0-9][A-Z0-9 _]*$

您可以选择在前面添加一些空格或下划线,然后您需要一个字母或数字,然后需要任意数量的数字,字母,空格或下划线。

仅包含空格和下划线的内容将导致[A-Z0-9]部分失败。

答案 3 :(得分:7)

您可以使用lookaround

^(?=.*[A-Za-z0-9])[A-Za-z0-9 _]*$

它将提前检查字符串是否有字母或数字,如果是,它将检查其余的字符是否符合您的要求。这可能会有所改进,但它似乎适用于我的测试。

更新:

添加modifications建议的Chris Lutz

^(?=.*[^\W_])[\w ]*$/

答案 4 :(得分:2)

对我来说@“^ [\ w] + $”正在工作,允许数字,字母和空格,但需要输入至少一个字母或数字。

答案 5 :(得分:0)

这将验证特殊字符以及前导和尾随空格:

var strString = "Your String";

strString.match(/^[A-Za-z0-9][A-Za-z0-9 ]\*[A-Za-z0-9]\*$/)

答案 6 :(得分:0)

$("#ValuationName").bind("keypress", function (event) {
    if (event.charCode!=0) {
        var regex = new RegExp("^[a-zA-Z ]+$");
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key)) {
            event.preventDefault();
            return false;
        }
    }
});

答案 7 :(得分:0)

您可以将此添加到jquery.validationEngine-en.js文件

    "onlyLetterNumberSp": {
                "regex": ^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$,
                "alertText": "* No special characters allowed"
          },

并在文本字段中将其称为

<input type="text" class="form-control validate[required,custom[onlyLetterNumberSp]]"  id="title" name="title" placeholder="Title"/>