字母数字javascript正则表达式失败
我正试图中断向测试字段提交字母数字字符的表单。在谷歌搜索之后,我发现了许多人人都认为非常有效的regex实现字母数字javascript正则表达式失败,javascript,jquery,regex,Javascript,Jquery,Regex,我正试图中断向测试字段提交字母数字字符的表单。在谷歌搜索之后,我发现了许多人人都认为非常有效的regex实现 if( !jQuery('input[name=myUsername]').val().test(/^[a-zA-Z0-9]+/) ) { alert('ERROR: Your username contains invalid characters. Please use numbers and letters only. No spaces, no punctuati
if( !jQuery('input[name=myUsername]').val().test(/^[a-zA-Z0-9]+/) ) {
alert('ERROR: Your username contains invalid characters. Please use numbers and letters only. No spaces, no punctuation.');
jQuery('input[name=myUsername]').focus();
return false;
}
但是,如果该值以非字母数字字符开头,则仅返回false并创建警报。如果我输入“bo$$”,它允许它作为字母数字,即使$不是字母数字字符。。。如果我输入“$$ob”,它将失败并发出警报
如何修复此问题,使其在整个值中的任何无效字符中都失败?我尝试了.match()而不是.test(),但同样的问题,我假设正则表达式中的某个地方出错了使用锚定
$
避免在结尾匹配不需要的字符:
/^[a-zA-Z0-9]+$/
放置$
结束锚来限制它。如果没有$
,您的正则表达式将进行部分匹配
$ assert position at end of a line
bo$$
将与bo
进行部分匹配,因为$
不存在。尝试/^[a-zA-Z0-9]+$/
通常不会影响我的匿名性,但在这种情况下,我会破例,尽管我会在几个小时后删除评论。否决票,因为原稿不清楚/给人错误的印象。你的编辑然后修正了它,所以我已经扭转了否决票。够公平了,我有点匆忙。你说得对-评论通常是有帮助的/只是公平的。
$ assert position at end of a line