【问题标题】:Special character validation特殊字符验证
【发布时间】:2013-05-16 01:29:46
【问题描述】:

我编写了一些 javascript 来验证字符串是否为字母数字,但我只是想知道如何添加一些代码以包含连字符 (-) 和斜杠 (/) 作为可接受的输入。这是我当前的代码:

function validateAddress() {
  var address = document.getElementById('address');

  if (address.value == "") {
    alert("Address must be filled out");
    return false;
  } else if (document.getElementById('address').value.length > 150) {
    alert("Address cannot be more than 150 characters");
    return false;
  } else if (/[^a-zA-Z0-9\-\/]/.test(address)) {
    alert('Address can only contain alphanumeric characters, hyphens(-) and back slashs(\)');
    return false;
  }
}

【问题讨论】:

  • 在字符组中添加连字符和斜线...?

标签: javascript function validation


【解决方案1】:

简单的 Javascript 版本

isValidCharacter(text) {
  const validCharacterRegex = /^[a-zA-Z]*$/;
  return validCharacterRegex.test(text);
}

打字稿版本

isValidCharacter(text: string): boolean {
  const validCharacterRegex: RegExp = /^[a-zA-Z]*$/;
  return validCharacterRegex.test(text);
}

【讨论】:

    【解决方案2】:

    输入:

    <input type="text" name="textname" id="tname"  onblur="namefun(this.value)">
    

    Javascript

    function namefun(c) {
      var spch = /[A-z\s]/gi;
      var dig = /[0-9]/g;
      var ln = c.length;
      var j = 1;
      for (var i = 0; i < ln; i++) {
        var k = c.slice(i, j);
        if (spch.test(c) == false || dig.test(c) == true) {
          alert("Invalid name");
          document.getElementById("tname").value = "";
          ln = 0;
          setTimeout(function () {
            tname.focus();
          }, 1);
          //return false;
        }
        j++;
      }
    }
    

    【讨论】:

      【解决方案3】:

      只需将它们添加到字符组即可。当然,因为-/ 在这种情况下都是特殊字符(/ 结束一个正则表达式,- 表示一个范围),你需要用前面的\ 转义它们:

      function validateAddress(){
          var TCode = document.getElementById('address').value;
      
          if( /[^a-zA-Z0-9\-\/]/.test( TCode ) ) {
              alert('Input is not alphanumeric');
              return false;
          }
      
          return true;     
      }
      

      【讨论】:

      • 这包括à、è、ê等吗?
      • @Vaia 不,它不会——您将不得不为此使用更高级的 RegExp 功能:关于 here 有一个很好的答案
      • @backslashN 因为要求还允许使用连字符和正斜杠。
      • 但是这个检查也可以防止空间
      • 您可以使用相同的原理添加您想要的任何其他字符。如果您也想要空间,只需将其添加到序列的末尾:/[^a-zA-Z0-9\-\/ ]/
      【解决方案4】:
      function isValidCharacter(txtTitle) {   
           var title = document.getElementById(txtTitle);
           var regExp = /^[a-zA-Z]*$/
           if (!regExp.test(title.value)) {
              title.value = '';
              return false;
              }
            else {      
                 return true;
              }
         }
      
      
      function Validation(){
       var txtTitles = document.getElementById('txtTitle');
        if (isValidCharacter(txtTitles.id) == false) {
         alert("Please enter valid title. No special character allowed.");        
          return false;
        }  
       }
      
      
      
         $("#Btn").unbind("click").click(function () {
              if (Validation() == false) {
      
              }
              else {
                    //success     
              }
         }
      

      【讨论】:

        猜你喜欢
        • 2011-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 2011-06-09
        • 2021-10-12
        相关资源
        最近更新 更多