javascript - 具有少量特殊字符的字符串的有效正则表达式

标签 javascript jquery regex validation

我在 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 。这个 fiddle 目前验证了它们两个,而 RegExr说它应该按预期工作。

最佳答案

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

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>

关于javascript - 具有少量特殊字符的字符串的有效正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28248747/

相关文章:

jquery - HTML 范围输入中的样式化步骤

javascript - 使用 map 功能时如何动态地将每个状态绑定(bind)到每个复选框

javascript - 如何在 JavaScript 中实现字符串操作

javascript - 如何预先计算在 waitForKeyElements() 回调中使用的内容?

Visual Studio 中的正则表达式 : How to comment out all lines that contain "xyz"?

javascript - 给定一个全名变量,如何仅使用 JS 返回名字+姓氏首字母

python - 将中文字符转换为 XML/HTML 样式的数字实体并转换为 Unicode UTF-8?

javascript - Kendo Treeview Angularjs 上的自定义按钮

javascript - 调用 Servlet 并从 JavaScript 和参数调用 Java 代码

php - WooCommerce 使用 Ajax 将多个商品添加到购物车