JavaScript正则表达式 “|“ 使用的注意事项

it2023-06-22  74

今天在做作业时差点秃头,不过也发现了正则表达式的一个问题

先贴出作业

还有一开始我的代码

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title></title> </head> <body> <form name="form_1"> <table border="1" cellpadding="2" cellspacing="0" align="center"> <caption align="center">新用户注册</caption> <tr > <td>用户名:</td> <td><input type="text" name="" id="userName" value="" /></td> <td>* 不能为空,可包括中文、字母、下划线、数字和减号,总长度为4-8之间</td> </tr> <tr> <td>密 码:</td> <td><input type="password" name="" id="passWord" value="" /></td> <td>* 只能是字母、数字组合,长度8-12</td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="" id="Age" value="" /></td> <td>* 只能是整数</td> </tr> <tr> <td>联系电话:</td> <td><input type="text" name="" id="telNum" value="" /></td> <td>* 允许手机号码与固定电话</td> </tr> <tr> <td>身份证号:</td> <td><input type="text" name="" id="idNum" value="" /></td> <td>* 15位或18位</td> </tr> <tr> <td>Email:</td> <td><input type="text" name="" id="Email" value="" /></td> <td>* 符合email格式</td> </tr> <tr align="center"> <td colspan="3"> <input type="submit" name="" id="" onclick="Registered()"/> <input type="reset" name="" id="" /> </td> </tr> </table> </form> <script type="text/javascript"> function Registered() { var username = document.getElementById("userName").value; var password = document.getElementById("passWord").value; var age = document.getElementById("Age").value; var telnum = document.getElementById("telNum").value; var idnum = document.getElementById("idNum").value; var email = document.getElementById("Email").value; var cnt = 0; if ((/^[\u4E00-\u9FA5a-zA-Z0-9_-]{4,8}$/).test(username)) { cnt += 1; } else{ alert("用户名错误"); } if ((/^[0-9a-zA-Z]{8,12}$/).test(password)) { cnt += 1; } else{ alert("密码错误"); } if ((/^[0-9]+$/).test(age)) { cnt += 1; } else{ alert("年龄错误"); } if ((/^((0\d{2,3}-\d{7,8}) | (1[345678]\d{9}))$/).test(telnum)){ cnt += 1; } else{ alert("联系电话错误"); } if ((/^([1-9]{1})([0-9]{16})([Xx0-9]{1})$/).test(idnum)) { cnt += 1; } else{ alert("身份证错误"); } if ((/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/).test(email)) { cnt += 1; } else{ alert("邮箱错误"); } console.log(cnt) if (cnt == 6){ alert("注册成功!"); } else{ alert("注册失败!"); } } </script> </body> </html>

 修改了一些错误后,一直在联系电话那里出问题。经过一系列验证,确定是正则表达式出的问题,但一直找不出。

后来才发现,是我的编程习惯给我惹的祸。

if ((/^((0\d{2,3}-\d{7,8}) | (1[345678]\d{9}))$/).test(telnum)){ cnt += 1; } else{ alert("联系电话错误"); }

出错的原因就在于 "|" 旁边的两个空格。。。。

着实没想到啊!!!

现在想想,以后在正则表达式里不要出现多余的符号为好,不然就可能想我一样,想到秃头!

最新回复(0)