如何使用javascript正则表达式检查;“空的”;表单字段?

如何使用javascript正则表达式检查;“空的”;表单字段?,javascript,jquery,regex,Javascript,Jquery,Regex,我正在从事一个基于php+javascript的项目,并已在以下位置创建了一个模型页面: 我知道如何使用javascript或php检查表单的特定字段是否为“空”,也就是说,它是否包含除whitepsace字符以外的字母数字字符(例如空格、制表符和换行符) 然而,由于我现在使用的jquery插件依赖于regex来验证字段,因此我的普通apporach不再起作用 如果您转到第三个选项卡(3.填写装运信息并付款),您可以在Firstname字段中输入一些内容,它会自动进行检查。好的然而,如果 你只

我正在从事一个基于php+javascript的项目,并已在以下位置创建了一个模型页面:

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

然而,由于我现在使用的jquery插件依赖于regex来验证字段,因此我的普通apporach不再起作用

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

问题出在哪里?后面有一个正则表达式,如下所示:

"noSpecialCaracters":{
                    "regex":"/^[0-9a-zA-Z ]+$/",
                    "alertText":"* No special caracters allowed"},
这不会过滤掉空字符

我在网上搜索,尽我最大的努力编造另一个正则表达式来匹配,我尝试了

"regex":"/^[^]+$/"
用于匹配非空字符,但这不适用于


有人能帮我吗?非常感谢

对于非空白,请尝试以下操作:

([^\s]*)
例如:

/([^\s])/.test("   A"); //TRUE
/([^\s])/.test("    "); //FALSE

您可能希望尝试将表达式包装在以下
^\s*(表达式)\s*$
中。然后使用组查找“修剪”匹配项。这只消除了尾随或前导空格

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

/^\s*[0-9a-zA-Z][0-9a-zA-Z ]*$/
这确保至少有一个字符不是空白字符,并且是允许的字符之一

你也可以考虑其他字符,如连字符(-)或撇号(′),也可能出现在名称……/P>

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

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

function anyChar(str){
    return /\S+/.test(str);
}
但是,您可能不希望有人输入名为“12345”或“!!!”,因此,最好使用
/[a-z]/i
,因为只有当至少有一个字母字符时,这个正则表达式才会匹配

function anyChar(str){
    return /\S+/.test(str);
}
如果我正在使用emty数据,将返回false

/^\s*\S+.*/
也就是说

  • 零个或多个空白字符(
    \s*
    ),后跟
  • 一个或多个非空白字符(
    \S+
    ),后跟
  • 任何东西,不管是否为空白(
    *
这允许使用单个单词或多个单词。我在开始时允许使用空格,因为我知道在开始时很容易漏掉一个空格,并对为什么不允许输入感到困惑:|


Mozilla开发者网络提供了一个很好的参考。

您正在使用哪个验证插件?如果是Basistance的验证,则可以传入一个JSON属性。用法:
required:true
Hi-Alex,这是插件页面:Hi-Nick:I尝试了[code]“regex”:“/^([^\s]*)$/”、[/code]和[code]“regex”:“/^[^\s]*$/”、[/code]但都不起作用。对不起,我对正则表达式一点也不在行……嗨,尼克:是的,这对香草javascript很有效。但是对于插件。。。还是不行。我想这不是正则表达式的问题。可能是其他地方出了问题。谢谢你的帮助@迈克尔-我会在早上抓起那个插件进行测试,明天午餐时查看你的SO消息,这让我很好奇。@Nick:非常感谢。请慢慢来。我不担心:)@Michael-问题是插件在某些情况下无法重新验证,不确定您要采取的修复路线。我使用的jquery.validate插件更成熟一些……你也可以做同样的事情,你只需要插入一些错误放置代码,让它在屏幕上看起来更漂亮。嗨,查尔斯:我确实可以强制用户不要输入任何前导空格,这对我来说肯定会有帮助。但是,我仍然想知道如何在你们的帮助下绕过这个问题。如果你想让他们能够使用前导空格,那么这应该可以做到/^\s*[0-9a-zA-Z][0-9a-zA-Z]*$/