【问题标题】:Valid Regex for string with few special characters具有少量特殊字符的字符串的有效正则表达式
【发布时间】:2015-01-31 14:16:08
【问题描述】:

我被 javascript 中的正则表达式检查卡住了,找不到有效的解决方案。

我的 Javascript 函数:

function checkFilledText() {
    var retBool = false;
    var vals= $("#input1").val();
    if ($.trim(vals) == "" || vals.length <= 0) {
        alert("No text entered");
        return false;
    }
    var pattrn = new RegExp("[A-Za-z0-9.\-/:]{3,15}");
        retBool = pattrn.test(vals);
    alert("Validation is: " + retBool);
}

正则表达式应该验证 M-24554-236 而无效 M-45455^455。这意味着任何包含带有/不带有特殊字符(包括/\.:-)的文本(字母数字)的字符串都是有效的,而除带有字母数字的特殊字符之外的任何特殊字符都应该使字符串无效。

这是fiddle。这个小提琴目前验证了它们,而RegExr 说它应该按预期工作。

【问题讨论】:

    标签: javascript jquery regex validation


    【解决方案1】:

    由于您使用的是正则表达式构造函数,因此您需要转义一些特殊字符,因此请使用像这样的正则表达式

    var pattrn = /^[A-Z\d.\\\-\/:]{3,15}$/i 
    

    var pattrn = new RegExp("^[A-Z\\d.\\\\\\-\\/:]{3,15}$", 'i');
    

    function checkFilledText() {
      var retBool = false;
      var vals = $("#input1").val();
      if ($.trim(vals) == "" || vals.length <= 0) {
        $('#log').html("No text entered");
        return false;
      }
      var pattrn = new RegExp("^[A-Z\\d.\\\\\\-\\/:]{3,15}$", 'i');
      // M-2344234-234 must be valid
      // M%2344234-234 must be invalid
      retBool = pattrn.test(vals);
      $('#log').html("Validation is: " + retBool);
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <input type="text" id="input1" />
    <input type="submit" onclick="checkFilledText()" />
    
    <div id="log"></div>

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2016-05-16
      • 2021-09-06
      • 2021-12-05
      • 1970-01-01
      相关资源
      最近更新 更多