我有一个文本字段,我正在阅读它的价值。我想只允许使用字母数字字符和连字符值。
如果输入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;
}
请帮忙。谢谢你的帮助和时间。
答案 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(...)