1
$('#reg_submit').click(function () {
  var reg_password1 = $('#reg_password1').val();
  letters = /([a-z])([0-9])/; 
  var errorMessage =  '';

  if ( ! reg_password1.value.match(letters) )   
  {   
    errorMessage = "Password must be alphanumeric";
    $('#msg_regpass1').html(errorMessage).show();
  }
  else {
    $('#msg_regpass1').html('').hide();
  }
});

我使用上面的 jquery 代码对我的注册页面应用字母数字验证。但是我得到了与 match() 相关的 javascript 错误,这样的匹配是未定义的。任何人都可以提出上述问题的解决方案,或者请提供一些其他代码来获取上述代码的字母数字验证。该字母模式也无法正常用于字母数字验证。任何人都可以建议其他模式

提前致谢

4

4 回答 4

7

This one is working for me:

var reg_password1 = 'test123#';
var letters = /^[a-zA-Z0-9]+$/;

var result = letters.test(reg_password1);

console.log(result);​

DEMO

于 2012-07-18T01:20:22.787 回答
1

正如您所要求的只是一个建议,这是一个开始:您可能想要的正则表达式是/^[a-z\d]+$/i. 只有当您的正则表达式在字符串中的任何位置包含单个小写字母或数字时,您现有的正则表达式才会匹配;建议说每个角色都必须是。

或者,您可以对您的正则表达式使用轻微的变化:/[^a-z\d]/i它匹配单个非字母数字值。然后调整你的逻辑说:如果我在这里有一个匹配,那么字符串是无效的。

至于match未定义,请阅读JavaScript 中与正则表达式相关的方法。有些属于字符串,有些属于Regexp类。

于 2012-07-18T01:14:47.560 回答
0

利用

reg_password1.match(letters)
于 2012-07-18T01:14:32.663 回答
0

您的 jQuery.val();方法将返回您的值,因此更改此行

if(!reg_password1.value.match(letters))   

if(!reg_password1.match(letters))   

我猜你也想要一个稍微不同的正则表达式。

如果所有字符都必须是 az 或 0-9(不区分大小写),那么试试这个:

/^[a-z0-9]*$/i

但是,这一切都说,如果这真的是一个密码字段,你应该让用户选择像 $,#,!,@,%_,-,(,[,),] 等符号,使他们能够选择一个强密码。;-)

于 2012-07-18T01:14:41.947 回答