js 正则表达式 要求密码的格式为6-12位,只能是字母、数字和下划线

该段代码展示了如何使用JavaScript正则表达式进行密码格式验证,要求输入的密码必须是6-16位,且只能包含字母、数字和下划线。在用户尝试修改密码时,会检查新密码、确认密码和旧密码是否符合规则,并进行相应的提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. //修改密码点击保存事件  
  2.     function checkAll(){  
  3.           
  4.         //获取到密码值  
  5.             var conformedPassword = $("#conformedPassword").val();  
  6.         var oldPassword = $("#oldPassword").val();  
  7.         var newPassword = $("#newPassword").val();  
  8.         //校验规则 正则表达式  只允许输入 数字跟字母   
  9.         var reg = /^[A-Za-z0-9]{6,16}$/;      
  10.         //通过正则的test方法 可以拿到一个boolean类型的值 判断即可ss  
  11.         var flagconformedPwd = reg.test(conformedPassword);    
  12.         var flagoldPwd = reg.test(oldPassword);  
  13.         var flagnewPwd = reg.test(newPassword);  
  14.           
  15.         if(flagconformedPwd == false || flagoldPwd == false || flagnewPwd ==false){    
  16.                         //由于我用的EasyUI所以弹出框是这样的   JS 直接alert()即可  
  17.             $.messager.alert('警告框','密码必须由 6-16位字母、数字组成.');   
  18.             return;    
  19.         }else{  
  20.             var currentPassword = $('#currentPassword').val();  
  21.             //var oldPassword = $('#oldPassword').val();  
  22.             //对旧密码进行md5 加密  
  23.             oldPassword = hex_md5(oldPassword).toUpperCase();  
  24.             //var newPassword = $('#newPassword').val();  
  25.             newPassword = hex_md5(newPassword).toUpperCase();  
  26.             var conformedPassword = $('#conformedPassword').val();  
  27.             conformedPassword = hex_md5(conformedPassword).toUpperCase();  
  28.             if(oldPassword != "" && newPassword !="" && conformedPassword != ""){  
  29.                 /* if(oldPassword != currentPassword){ 
  30.                     $.messager.alert('警告框','修改密码必须录入正确的旧密码!'); 
  31.                     //alert('修改密码必须录入正确的旧密码。'); 
  32.                     return; 
  33.                 } */  
  34.                 if(newPassword != conformedPassword){  
  35.                      $.messager.alert('警告框','“新密码”与“确认密码”不一致!');  
  36.                     //alert('“新密码”与“确认密码”不一致。');  
  37.                     return;  
  38.                 }  
  39.                 if(newPassword == oldPassword){  
  40.                     $.messager.alert('警告框','“新密码”与“旧密码”一致。');  
  41.                     return;  
  42.                 }  
  43.             }else{  
  44.                 $.messager.alert('警告框','录入信息不完整,无法修改!');  
  45.                 return;  
  46.             }  
HTML代码片段

[html]  view plain  copy
  1. <table  cellpadding="1" cellspacing="5" class="formtable" >  
  2.     <tr >  
  3.      <td  align="right" width="15%" nowrap>  
  4.          <label class="Validform_label" style="font-size :16px" >  
  5.          旧  密  码:  
  6.          </label>  
  7.      </td>  
  8.      <td class="value" width="35%" >  
  9.          <input class="inputxt" id="oldPassword" name="oldPassword" type="password" datatype="*4-16"  nullmsg="请输入4-16位密码!"/>  
  10.      </td>  
  11.     </tr>  
  12.     <tr>         
  13.     <td align="right" width="15%" nowrap>  
  14.        <label class="Validform_label" style="font-size :16px">  
  15.          新  密  码:  
  16.        </label>  
  17.     </td>  
  18.     <td class="value" width="35%" >  
  19.         <input class="inputxt" id="newPassword" name="password" type="password" datatype="*4-16"  nullmsg="请输入4-16位密码!"/>  
  20.         </td>  
  21.     </tr>  
  22.     <tr>             
  23.         <td align="right" width="15%" nowrap>  
  24.         <label class="Validform_label" style="font-size :16px">  
  25.             确认密码:  
  26.         </label>  
  27.     </td>  
  28.     <td class="value" width="35%" >  
  29.          <input class="inputxt" id="conformedPassword" name="conformedPassword" type="password" datatype="*4-16"  nullmsg="请输入4-16位密码!"/>  
  30.         </td>  
  31.     </tr>  
  32.                               
  33.     <tr>  
  34.     <td align="center" colspan="8" class="buttons">  
  35.          <input id="saveBtn" style="width:60px;"  type="button" value="修改" onclick="checkAll()"/>  
  36.          <input id="restBtn"  style="width:60px;" type="button" value="取消" onclick="closeWindow()" />  
  37.     </td>  
  38.     </tr>  
  39. </table>  
<think>我们使用正则表达式来验证用户名:要求是8-16个字符,只能包含字母(大小写)、数字下划线正则表达式:/^\w{8,16}$/ 解释: ^ 表示字符串的开始 \w 匹配任何字母数字下划线(等价于[A-Za-z0-9_]) {8,16} 表示前面的字符(即\w)至少出现8次,最多16次 $ 表示字符串的结束 但是注意:在JavaScript中,我们通常使用正则表达式的test方法或者match方法等。 然而,这里有一个细节:\w在JavaScript中确实等价于[A-Za-z0-9_],所以符合要求。 但是,我们也要注意,如果字符串中有换行符等,使用^$可以确保整个字符串都符合要求。 下面我们用JavaScript代码实现: 我们可以写一个函数,接受一个用户名,然后返回一个布尔值表示是否有效。</think>### JavaScript 正则表达式实现用户名验证(8-16字母/数字/下划线) 以下是使用 JavaScript 实现用户名验证的完整解决方案: ```javascript /** * 验证用户名是否符合规范:8-16字母/数字/下划线 * @param {string} username - 待验证的用户名 * @returns {boolean} - 验证结果 */ function validateUsername(username) { // 正则表达式:以字母/数字/下划线开头结尾,长度8-16 const regex = /^\w{8,16}$/; return regex.test(username); } // 测试用例 const testCases = [ {input: "valid_user1", expected: true}, // 有效(11) {input: "short", expected: false}, // 无效(5) {input: "too_long_username_123", expected: false}, // 无效(21) {input: "user name", expected: false}, // 无效(含空格) {input: "special@char", expected: false}, // 无效(特殊字符) {input: "under_score_", expected: true}, // 有效(11) {input: "12345678", expected: true}, // 有效(8) {input: "中文用户名", expected: false}, // 无效(中文字符) {input: "UPPER_CASE", expected: true}, // 有效(大写字母) {input: "trailing_", expected: true} // 有效(以下划线结尾) ]; // 执行测试 console.log("用户名验证测试结果:"); testCases.forEach((test, index) => { const result = validateUsername(test.input); const status = result === test.expected ? "✓ 通过" : "✗ 失败"; console.log(`${index + 1}. ${status} - 输入: "${test.input}", 预期: ${test.expected}, 实际: ${result}`); }); // 实际使用示例 const userInput = prompt("请输入用户名(8-16字母/数字/下划线):"); if (validateUsername(userInput)) { alert("用户名有效!"); } else { alert("用户名无效!请确保:\n1. 长度8-16\n2. 仅包含字母/数字/下划线"); } ``` #### 代码解释: 1. **核心正则表达式 `/^\w{8,16}$/`**: - `^` 匹配字符串开头 - `\w` 匹配字母(A-Za-z)、数字(0-9)或下划线(_) - `{8,16}` 表示前面的字符类(\w)出现 8 到 16- `$` 匹配字符串结尾 2. **主要函数**: - `validateUsername()` 使用 `RegExp.test()` 方法检测字符串是否匹配 - 返回 `true` 仅当整个字符串完全符合规则 3. **测试用例覆盖**: - 有效用户名(正常长度、边界值) - 无效用户名(过短、过长、特殊字符、空格等) - 边界情况(纯数字、以下划线结尾等) 4. **实际使用**: - 通过 `prompt` 获取用户输入 - 使用验证函数检查并显示结果 #### 正则表达式可视化: ``` ^\w{8,16}$ └┬┘└┬─┘ └┬┘ │ │ └─ 匹配8-16次 │ └─ 字母/数字/下划线 └─ 字符串开始置 └─ 字符串结束置 ``` #### 在线测试建议: 您可以在 [RegExr](https://regexr.com/) 或 [Regex101](https://regex101.com/) 等工具中测试正则表达式: 1. 输入 `/^\w{8,16}$/` 2. 在测试区输入各种用户名案例 3. 查看实时匹配结果 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值