首页 文章

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

提问于
浏览
41

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

这将用于验证我的网站的用户名 . 我实际上想支持尽可能多的字符,但只是想确保我阻止代码注入,并且字符对所有用户都显示正常 . 因此,我肯定对正则表达式验证建议持开放态度,这些建议可以支持更广泛的字符集 .

8 回答

  • 7

    您只需指定当前的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 _]*$
    
  • 55

    要继续并在那里得到一个观点,而不是重复使用这些:

    [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方面应该做些什么,但我确信这并不难 .

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

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

    只包含空格和下划线的东西将失败 [A-Z0-9] 部分 .

  • 0

    你可以使用lookaround

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

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

    更新:

    添加Chris Lutz建议的modifications

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

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

  • 0

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

    var strString = "Your String";
    
    strString.match(/^[A-Za-z0-9][A-Za-z0-9 ]\*[A-Za-z0-9]\*$/)
    
  • 13
    $("#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;
            }
        }
    });
    
  • 9

    您可以将此添加到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"/>
    

相关问题