javascript只允许字母数字和连字符 - 文本字段中的值

时间:2011-12-28 21:01:15

标签: javascript regex

我有一个文本字段,我正在阅读它的价值。我想只允许使用字母数字字符和连字符值。

如果输入abc $ d或w2w,2或者我们& * 23等值,我到目前为止的正则表达式似乎没有触发。

var someName = document.getElementById("sometextField");
if(/^[a-z0-9-]+$/i.test(someName.value))
{
    alert('Name can only be alpha numeric with hypen.');
    return;
}

请帮忙。谢谢你的帮助和时间。

2 个答案:

答案 0 :(得分:3)

访问输入的value属性:

if(!/^[a-z0-9-]+$/i.test(someName.value)) {
   //-------------------------^^^^^^^^^^
   alert('Name can only be alpha numeric with hypen.');
   return;
}

更新

要仅在表达式的中间允许连字符,而不是在开头或结尾,您可以使用以下内容。可能有更好的方法,但这应该做的工作。您有三组[a-z0-9]+,但中间一组也允许-。开始和结束组不允许-

/^[a-z0-9]+[a-z0-9-]+[a-z0-9]+$/

答案 1 :(得分:-1)

请注意,“ - ”是一个特殊字符。我不知道浏览器的正则表达式引擎是否认为它是一个特殊字符。但我建议你把它作为“[a-z0-9 \ - ]”来逃避它。此外,否定应该放在类中,如“[^ a-z0-9 \ - ]”。最后,它不应包含开始和结束标记(^和$)。所以,我认为它会像/ [^ a-z0-9 \ - ] / .test(...)