Javascript正则表达式只有字母,数字和下划线

时间:2014-02-04 00:20:18

标签: javascript regex

我想检查文本框输入是否有效(只允许使用字母,数字和下划线。没有空格或破折号)。我目前有这个,但空白&破折号似乎过去了。

function validText(field)
{
    var re = /[a-zA-Z0-9\-\_]$/
    if (field.value.search(re) == -1)
    {
        alert ("Invalid Text");
        return false;
    }
}

有效输入类似于

'Valid_Input123'

无效

'Invalid-Input !'

4 个答案:

答案 0 :(得分:22)

  1. \w是一个方便的正则表达式转义序列,涵盖字母,数字和下划线字符
  2. 您应该通过在表达式的开头(^)和结束($)处锚定有效性测试来测试整个字符串的有效字符
  3. 正则表达式test方法比字符串search方法
  4. 您还可以使用+量词
  5. 测试一个或多个字符

    总结(代码中)

    var re = /^\w+$/;
    if (!re.test(field.value)) {
        alert('Invalid Text');
        return false;
    }
    return true;
    

    或者,您可以使用

    测试任何无效字符
    /\W/.test(field.value)
    

    \W字母,数字或下划线字符以外的任何字符。

    然后,您可能还需要添加长度检查以使空字符串无效,例如

    if (/\W/.test(field.value) || field.value.length === 0)
    

答案 1 :(得分:8)

您只是测试文字结束$)是否包含字符类中的一个字符。您还明确允许破折号(\-)。如果您不想这样,请将其删除。

锚定表达式(^$),添加量词(+)和.test字符串是否只包含这些字符:

var re = /^[a-zA-Z0-9_]+$/; // or /^\w+$/ as mentioned
if (!re.test(field.value)) {

}

答案 2 :(得分:2)

[\w]*就足够了。

Regex101 Example


这是一个非常基本的正则表达式问题

在此处详细了解正则表达式:regular-expressions.info

答案 3 :(得分:2)

  1. 您忘记使用^
  2. 在开头锚定正则表达式
  3. test更易于使用
  4. 不需要破折号。
  5. 它应该是这样的:

    if (!/^[a-z0-9_]+$/i.test(field.value)) {
        //
    }