【问题标题】:jQuery alphabetical only with numericjQuery 字母仅与数字
【发布时间】:2015-07-08 08:03:41
【问题描述】:

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

例如: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;
});

【问题讨论】:

    标签: javascript jquery validation numeric alphabetical


    【解决方案1】:

    这也可能有用:

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

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

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

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

    你可以把这三个字符类想象成

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

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

    您可以在此处摆弄正则表达式并测试结果:https://regex101.com/r/iB6pE1/3

    【讨论】:

    • +1 表示博览会;但是,Qwerity 的正则表达式只需要添加 1 个字符即可避免仅匹配空格;我不确定它是否证明了额外的负载/复杂性。
    【解决方案2】:

    这应该会有所帮助:

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

    【讨论】:

    • 未在问题中明确说明,但 (?!^[0-9 ]*$)^[a-zA-Z0-9 ]+$ 可能更接近预期行为(即在负前瞻中包含空格,因此例如“123”或“1 2 3”不是接受)。
    • 我的错误。我只检查我在键盘上放了哪些符号。但我应该检查这个输入并验证是否缺少 alpha
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2011-02-02
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多