代码之家  ›  专栏  ›  技术社区  ›  Michael Mao

如何使用javascript regex检查“空”表单字段?

  •  11
  • Michael Mao  · 技术社区  · 15 年前

    我正在开发一个基于php+javascript的项目,并且已经在下面的网站上建立了一个模型页面: my website

    我知道如何使用javascript或php来检查表单的特定字段是否为“空”,也就是说,它是否包含除whitepsace字符以外的字母数字字符(例如,空格、制表符和换行符)。

    但是,由于我使用的jquery插件现在依赖regex来验证字段,所以我的普通apporach不再工作。

    如果您转到第三个选项卡(3)。填写发货信息并付款),您可以在firstname字段中输入一些内容,它会自动进行检查。好的。然而,如果 你只需在那里放一些空格字符,然后跳到下一个字段,好吧,这仍然感觉不错,这是不正确的,因为没有人的名字是什么都不是!

    问题是什么?在后面有一个像这样的regex:

    "noSpecialCaracters":{
                        "regex":"/^[0-9a-zA-Z ]+$/",
                        "alertText":"* No special caracters allowed"},
    

    这不会筛选出空字符。

    我在网上搜索,并尽我最大的努力弥补另一个正则表达式匹配,我试图

    "regex":"/^[^]+$/"
    

    用于匹配非空字符,但这不起作用…

    有人能帮我吗?非常感谢!

    6 回复  |  直到 11 年前
        1
  •  14
  •   Nick Craver    11 年前

    对于非空白区域,请尝试此操作:

    ([^\s]*)
    

    例子:

    /([^\s])/.test("   A"); //TRUE
    /([^\s])/.test("    "); //FALSE
    
        2
  •  9
  •   anonymous    14 年前
    function anyChar(str){
        return /\S+/.test(str);
    }
    

    如果emty数据返回false

        3
  •  1
  •   too much php    15 年前

    要回答您的问题,最小正则表达式是 /\S/ 只要至少有一个非空白字符,它就会匹配。

    但是,您可能不希望有人输入名字“12345”或“!!!,所以最好使用 /[a-z]/i 因为这个regex只有在至少有一个字母字符的情况下才匹配。

        4
  •  1
  •   Charles Wood    12 年前

    我在用

    /^\s*\S+.*/
    

    这意味着什么

    • 零个或多个空白字符( \s* )
    • 一个或多个非空白字符( \S+ )
    • 不管有没有空白( .* )

    这允许一个单词或多个单词。我允许在开始时使用空格,因为我知道在开始时错过一个空格是多么容易,并且对不允许输入的原因感到非常困惑:|

    Mozilla开发者网络 JavaScript regex page 供参考。

        5
  •  0
  •   Nick Bedford    15 年前

    您可以尝试将表达式包装为以下内容 ^\s*(expression)\s*$ .然后使用这些组查找“修剪过的”匹配项。这只消除尾随空格或前导空格。

    您可以强制用户输入修剪后的文本,或者优雅地接受未修剪的输入(更好),因为我发现复制和粘贴文本通常会留下一些用户可能不知道的尾随或前导空白。

        6
  •  0
  •   Charles Ma    15 年前
    /^\s*[0-9a-zA-Z][0-9a-zA-Z ]*$/
    

    确保至少有一个字符不是空白字符,并且是允许的字符之一。

    您可能还需要考虑其他字符,如连字符(-)或撇号('),这些字符也可能出现在名称中…

    /^\s*[0-9a-zA-Z][0-9a-zA-Z '-]*$/