繁体   English   中英

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

[英]Javascript regex only alphabet, number and underscore

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

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

有效的输入就像是

' Valid_Input123 '

无效

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

总结(在代码中)

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)

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

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

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

}

[\\w]*就够了。

Regex101示例


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

在此处了解有关正则表达式的更多信息: regular-expressions.info

  1. 你忘了在开始时使用^来锚定你的正则表达式
  2. test更容易使用
  3. 没有需要破折号。

它应该如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM