jQuery 仅按字母顺序和数字

jQuery alphabetical only with numeric

我在 JQuery 验证方面遇到了一些困难。我需要用数字 进行输入验证 字母顺序,但如果我只输入 数字 值,则不应验证。

例如:lorem ipsum 123应该有效,lorem ipsum应该有效,123 不应该有效。

我使用了这段代码,但它不能正常工作。

e.find('.alphanum').keypress(function(e) {
    var regex = new RegExp("^[a-zA-Z0-9 ]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }
    e.preventDefault();
    return false;
});

这应该有帮助:

/(?!^\d*$)^[a-zA-Z0-9 ]+$/

这也可能有用:

/^(?:[A-Za-z0-9 ]*[a-zA-Z ][0-9]*)+$/

它与 Qwertiy 提供的功能几乎相同,但可能更容易理解(恕我直言,这本身就是正则表达式的一种品质...)。

发生的情况是,我们形成了一个非捕获组,其中包含零个或多个允许的字符、一个必需的字符,然后是零个或多个允许但不是必需的字符,然后我们匹配该组。如果您也不想只允许白色 space 字符串,请将 space 从第二个字符 class 移到第三个字符 class,即

/^(?:[A-Za-z0-9 ]*[a-zA-Z][0-9 ]*)+$/

你可以把三个字符class想成

  1. 字符串中允许的所有字符。
  2. 所有必须出现至少一次的字符
  3. 在1.中出现,但在2.中没有出现的所有字符

这很可能比 Qwertiy 的答案效率低,但该解决方案也匹配例如" ",而此答案中的第二个则没有。

您可以 fiddle 使用正则表达式并测试结果,此处:https://regex101.com/r/iB6pE1/3