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

Nom*_*mad 4 javascript regex

我有一个文本字段,我正在读取其值。我只想允许字母数字字符和连字符 - 值。

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

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

请帮忙。感谢您的帮助和时间。

Mic*_*ski 5

访问输入的value属性:

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

更新

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

/^[a-z0-9]+[a-z0-9-]+[a-z0-9]+$/
Run Code Online (Sandbox Code Playgroud)